es6中的暂时性死区

只要在块级作用域中存在let命令,它所声明的变量就绑定了这个区域,不再受外部影响。

{
    var a = 1;

    if(true) {
        a = 4;
        let a = 5;
        console.log(a);
    }
}

上述的这段代码,会报错误a未定义,这是因为a在作用域内使用let声明,但是a却在声明之前调用,这里就形成了暂时性死区,所以就调用不成功了,尽管a在外部也有定义。

在es6中,如果区块中存在letconst命令,这个区块对这些命令声明的变量,从一开始就形成了封闭的作用域。凡是在声明之前就使用这些变量,就会报错。

如果您觉得本文对您有用,欢迎捐赠或留言~
微信支付
支付宝

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注