美文网首页
var let const的区别

var let const的区别

作者: Marshall3572 | 来源:发表于2021-04-07 16:25 被阅读0次

    ES 6 新特性一览
    我用了两个月的时间才理解 let

    • let和const是块级作用域,var是函数式作用域
    • let和const必须先定义后使用,var允许变量声明提前
    1. let 的作用域在最近的{}之间
    2. 如果你在 let a 之前使用 a, 那么报错
    3. 如果你重复let a ,那么报错
    
    const
    1. 2. 3. 同上
    4. 只有一次赋值机会,且要在声明的时候立马赋值
    

    var的bug

    1. var定义的变量,其作用域是函数体的全部。
    for(var i=0;i<10;i++){
      var a = 'a';
    }
    
    console.log(a); // 'a'
    

    跳出for循环了还可以访问到for循环里定义的变量

    1. 循环内变量过度共享
    for(var i = 0;i < 3;i++){
      setTimeout(function(){
        console.log(i);
      },3000)
    }
    

    会输出3个3,而不是预想的0、1、2

    let是更完美的var

    let就是用来解决上边两个bug的。

    • let声明的变量拥有块级作用域
      也就是说let声明的变量的作用域只是外层块,而不是整个外层函数。let声明的变量仍保留了提升特性但不会盲目提升。
    • 形如for (let x...)的循环在每次迭代时都为x创建新的绑定
      比如改进例二
    • let声明的全局变量不是全局对象的属性
      这意味着我们不能通过window.变量名的形式访问这些变量。
    • let重复定义变量会报错

    const是用来定义常量的

    const定义的变量在声明时就必须赋值

    相关文章

      网友评论

          本文标题:var let const的区别

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