美文网首页ES6Javascript教程
ES6教程(一)let和const

ES6教程(一)let和const

作者: klmhly | 来源:发表于2018-07-07 19:24 被阅读0次

    注意:
    ES5 只有全局作用域和函数作用域
    ES6的let和const是块级作用域

    特点:

    # 块级作用域
    # 不存在变量提升
    # 暂时性死区
    # 不允许重复声明

    1. let命令
    例子1:

    {
      let a = 10;
      var b = 1;
    }
    
    a // ReferenceError: a is not defined.
    b // 1
    

    在代码块之外调用这两个变量,结果let声明的变量报错,var声明的变量返回了正确的值。这表明,let声明的变量只在它所在的代码块有效。

    例子2:
    for循环计数器很适合用let命令。
    对比 varlet的区别:

    var a = [];
    for (var i = 0; i < 10; i++) {
      a[i] = function () {
        console.log(i);
      };
    }
    a[6](); // 10
    

    在for循环上用var声明的变量i属于全局变量,所以进行了10次循环,直到第11次退出循环的时候后,i的值是10。然后调用a[6](),此时输出的i就是全局i的值10.

    var a = [];
    for (let i = 0; i < 10; i++) {
      a[i] = function () {
        console.log(i);
      };
    }
    a[6](); // 6
    

    对于let声明的变量i,当前的i只在本轮循环有效,所以每一次循环的i其实都是一个新的变量.最后调用a[6](),由于每轮循环函数保存的i值是不同的。所以,运行结果就是那一轮的i=6。

    2. const命令
    # const声明一个只读的常量。一旦声明,常量的值就不能改变
    # const一旦声明变量,就必须立即初始化

    相关文章

      网友评论

        本文标题:ES6教程(一)let和const

        本文链接:https://www.haomeiwen.com/subject/xuuguftx.html