美文网首页
ES6 let和const命令

ES6 let和const命令

作者: coolheadedY | 来源:发表于2017-01-23 00:05 被阅读9次

    let和const命令

    let

    let命令与var类似,但是所声明的的变量只能在let所在的代码块内有效,let不存在变量提升

    • let的块作用域
    {
      let a = 1;
      var b = 2;
    }
    a //报错, 离开了块级作用域let所声明的变量不可访问
    b //2
    
    • let不存在变量提升
    console.log(a) //报错
    console.log(b) //undefined var声明的变量存在变量提升
    let a = 1;
    var b = 2;
    
    • let的暂时性死区
    var a = 1
    if(true){
      a = 'abc' //报错,在 {}块级作用域下变量a被let声明,变量a不再受外部影响
      let a;
    }
    
    • let用于for循环
    for(let i = 0; i < arr.length; i++){}
    

    块级作用域

    简单理解的话就是ES6{}块级作用域替代ES5的立即执行函数(匿名函数)

    // 立即执行函数的写法
    (function () {
      ...
      ...
    }());
    //块级作用域的写法
    {
       ...
      ...
    }
    

    const

    • const声明的是常量,声明后立即初始化不可再次赋值改变。
    const a;
    a = 1 
    a //undefined
    
    • 对于符合类型的如{},[],const命令赋值的变量只是地址, 该地址的数据可以改变
    const obj = {}
    obj.a = 1;
    obj.a //1 变量指向的地址的数据可以改变
    obj = {} //报错,  这里给变量重新赋值新的地址报错
    
    const arr = [];
    arr.push(1); //给变量指向的地址添加数据
    arr.length = 0; //给变量指向的地址更改属性
    arr = [1,2];    // 报错 变量的地址不可指向其他地址
    

    const的作用域与let命令相同:
    1只在声明所在的块级作用域内有效。
    2const命令声明的常量也是不提升,同样存在暂时性死区,只能在声明的位置后面使用。
    3const声明的常量,也与let一样不可重复声明。

    相关文章

      网友评论

          本文标题:ES6 let和const命令

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