美文网首页
let和var的区别

let和var的区别

作者: Will_板凳 | 来源:发表于2020-03-02 22:00 被阅读0次

    作用域不同

    let的作用域制作用于当前代码块

    {
    var str1 = "刘能";
    let str2 = "赵四";
    }
    console.log(str1);//undefined
    console.log(str2);//str is not defined
    
    • let就会报错。因为var作用的是函数作用域,let作用的是块级作用域。
    • 块级作用域:即在{}花括号内的域,由{ }包括,比如if{}块、for(){}块。
    • 函数级作用域:变量在声明它们的函数体以及这个函数体嵌套的任意函数体都是有定义的
    • 暂时性死区:全局的作用域、函数作用域,是没有块级作用域的。

    let的作用域不会被提升

    • var提升了作用域
    {
      console.log(str);//undefined
      var str = "刘能";
    }
    

    相当于

    {
     var str ;
     console.log(str);//undefined
     str = "刘能";
    }
    

    let会直接报错

     { 
       console.log(str);//str is not defined
       let str = "刘能";
    }
    

    let在相同的作用域下不能声明相同的变量

    {
      var str = "刘能";
      var str = "赵四";
      console.log(str);//赵四
    }
    
    
    
    {
      let str = "刘能";
      let str = "赵四";
      console.log(str);//Identifier 'str' has already been declared
    }
    
    

    let会覆盖前面的变量,而let不允许声明相同变量,会报错

    相关文章

      网友评论

          本文标题:let和var的区别

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