美文网首页
let的临时死区

let的临时死区

作者: 小小的白菜 | 来源:发表于2018-09-27 00:02 被阅读0次

    js变量提升

    var a = 2;
    function test() {
        console.log(a);
        let a = 5;
    }
    test();
    

    复制代码你觉得上面的代码会输出什么呢?是输出2,还是undefined呢?
    如果说,let没有变量提升的效果的话,那么应该是输出2。如果说let拥有和var一样的变量提升效果的话,那么应该是输出undefined。然而,其实上面的代码是会报错的。会报"ReferenceError: a is not defined"错误。那么为什么呢?

    let虽然具有变量提升的功能,但是它又与var不一样,它具有一个临死性死区的概念。

    临死性死区其实就是说,a我已经声明了,可是在没有到它赋值的时候,你都不能使用这个变量,不然就会报错。所以该当前作用域开始,一直到let a = 5为止这整一块,都是a变量的临死性死区,你不能使用它。而constlet它们的变量提升的效果是一样的,也都存在着临死性死区的概念。

    相关文章

      网友评论

          本文标题:let的临时死区

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