zoukankan      html  css  js  c++  java
  • ES6之let命令

    ES6新增了let命令,用来声明变量。它的用法类似于var。

    let和var声明变量的区别:

    1、let声明的变量,只在let命令所在的代码块内有效,出了这个块级作用域就不起作用

    先看一个例子:

    {
        let a=10;
        var b=1;
    }
    console.log(a);
    console.log(b);

    上述例子运行结果如图:

    以上例子中,分别用var和let声明了两个变量,然后在代码块之外调用这两个变量。let定义的a变量会报错 var声明的变量b会返回正确值.这表明,let声明的变量只在它所在的代码块有效。

    什么是块级作用域?

    任何一对花括号({ })中的语句都属于一个块,在花括号里面用let定义的所有变量在花括号外都是不可见的,我们称之为块级作用域。

    2.用var 声明变量的时候会出现“变量提升“的现象,而let声明变量不存在“变量提升“现象。

    什么是变量提升?

    变量可以在声明之前使用,变量的值为undefined。但let命令改变了该语法行为,它所声明的变量一定要在声明后使用,否则报错。

    例子1:

    //var的情况
    console.log(a); var a=10;
    //let的情况 console.log(b); let b=100;

    上述例子运行结果如图:

    上面代码中,变量a用var命令声明,会发生变量提升,即脚本开始运行时,变量a已经存在了,但是没有值,所以会输出undefined。变量blet命令声明,不会发生变量提升。这表示在声明它之前,变量b是不存在的,这时如果用到它,就会抛出一个错误。

    例子2:

    var a = 10;
    (function(){
      console.log(a);
      var a = 20;
    })();
    

    上述例子运行结果:undefined

    上面代码中,代码一开始已经定义了变量a,值为1,相当于全局变量,但是我们在代码块(函数内)里面还声明并定义了一个变量a,导致变量提升了,实际的代码执行顺序是这样的,

    var a = 10;
    (function(){
       var a;
       console.log(a);//先执行声明,接着就执行console.log(a);变量a只是声明还没定义,值便为undefined了。
       a = 20;
    })();
  • 相关阅读:
    【转】设计模式总结
    【转】并行开发
    C#开发微信公众平台-就这么简单
    (转载)MVC,MVP 和 MVVM 的图示
    插入排序
    选择排序
    VS发布 错误 未能将文件 复制到
    SqlServer 更改数据库名称
    linq查询时查询语句中附带多个查询时“已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭”
    不能将 CHECK_POLICY 和 CHECK_EXPIRATION 选项设为 OFF (关)
  • 原文地址:https://www.cnblogs.com/jing428/p/6908555.html
Copyright © 2011-2022 走看看