zoukankan      html  css  js  c++  java
  • ES6-01:常量与变量的声明

    首先,我们声明一个变量:

    //定义一个变量num,并赋值为10;
    let num = 10;
    //进行打印
    console.log(num);

    let与var有所不同:

    语法特点1:let变量只能在当前代码块使用

    (function(){
            {
                let i = 2;
            }
            alert(i);
        })();

    代码块是什么呢?

    我们的大括号就属于一个代码块,只要是代码块以内的都可以使用到,如果在外面就获取不到了,此时输出的i是没有值的。

    语法特点2:同一代码块不允许出现重名let变量

    (function(){
            var i = 9;//不允许
            let i = 10;//不允许
            let i = 11;
            console.log(i);
        })();

    下面来看下一个小测试:

     var arr3 = [];
        for(var i = 0;i<10;i++){
          arr3[i] = function(){
              alert(i)
          }
        }
        arr3[3]();

    结果会是多少?

    变量i是var声明的,在全局内都有效,

    所以每次循环,新值都会覆盖旧值,导致最后输出的是最后一轮的i的值。

    我们如何解决这种问题呢?

    这就要说到闭包了,这里不多说,看下解决方法(如果不了解闭包可以在本博客搜索相关知识)。

    以下通过闭包解决

    var arr = [];for(var i = 0;i<10;i++){
            (function sum(val){
                arr[i] = function(){
                    alert(val);
                }
            })(i)
    
        }
        arr[9]();

    当然,这种方法是不是麻烦了点!我们可以通过let定义变量来解决这个问题

    以下是let解决

    var arr2 = [];
        for(let i = 0;i<10;i++){
            arr2[i] = function(){
                alert(i)
            }
        }
        arr2[3]();
    变量i是let声明的,当前的i只在本轮循环有效,
    所以每一次循环的i其实都是一个新的变量,所以最后输出的是3.
    你学会了吗?有问题欢迎提出来!
  • 相关阅读:
    PyCharm专业版永久激活步骤详解(只是自己记一下以防后面需要)
    PV EV AC BAC EAC ETC等计算公式
    Linux服务器下安装Jmeter
    Python接口自动化测试运行成功但没有生成测试报告的总结
    Linux命令
    Python3+selenium环境配置
    selenium窗口切换问题
    Selenium安装问题
    Python爬虫功能(爬取网页图片)
    ASICC码对照表
  • 原文地址:https://www.cnblogs.com/ningmeng666/p/6492270.html
Copyright © 2011-2022 走看看