美文网首页JavaScript
面试题 -- let与var的区别

面试题 -- let与var的区别

作者: 开着五菱宏光的小白 | 来源:发表于2019-04-22 12:46 被阅读0次

    区别

    • let 可以定义块级作用域变量
    {
       var i = 0
    }
    console.log(i)   //0
    
    
    {
      let i = 0
    }
    console.log(i)  //i is not defined
    

    • let 配合for循环的独特应用
     for(var i = 0; i < 5; i ++) {
          setTimeout(() => {
              console.log(i)
          },0)
      }
       // 5个5
    
    
     for(let i = 0; i < 5; i ++) {
         setTimeout(() => {
            console.log(i)
         },0) 
     }
     // 0,1,2,3,4
    
    

    • let 没有变量提升和暂时性死区
    console.log(a)
    let a = "b"
    // a is not defined
    
    

    ES6 明确规定,如果区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。
    总之,在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”(temporal dead zone,简称 TDZ)。


    • let变量不能重复声明
    let a = 0
    let a = 1
    //Identifier 'a' has already been declared
    

    相关文章

      网友评论

        本文标题:面试题 -- let与var的区别

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