美文网首页
let和var的区别

let和var的区别

作者: 6659a0f02826 | 来源:发表于2020-12-21 13:39 被阅读0次

    ES2015已经用let代替var,并完善了var的一些特性,之所以换了一个关键词还保留原有的var关键词是因为原有的很多项目在使用var,所以不能取消,而是用一个新的关键词替代。
    一、块级作用域(let声明的变量只能在代码块中被访问到)
    以前块没有独立的作用域,外部成员也能访问块内部的变量。

    🌰
    if内就是一个块,在内部声明一个变量,外部能访问。

    if(true){
     var foo = 'zcy
    }
    console.log(foo)
    
    zcy
    

    let声明的变量只能在代码块中被访问到。把var改为let。

    if(true){
     let foo = 'zcy
    }
    console.log(foo)
    
    ReferenceError: foo is not defined
    

    所以,在块级作用域内,外部是无法访问的。

    二、let和var的另一个很大的区别在于:let的声明不会出现提升的情况。
    而var声明的变量都会被提升到最顶部。

    🌰
    用var声明变量,执行这两行代码,打印的结果是undefined,没有报错误,说明foo已经声明,只是还没有赋值

    console.log(foo)
    var foo = 'zcy'
    
    undefined
    

    用let声明变量,就报错了

    console.log(foo)
    let foo = 'zcy'
    
    ReferenceError:Cantnot access 'foo' before initialization
    

    相关文章

      网友评论

          本文标题:let和var的区别

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