使用let和var关键字的JavaScript的异常行为

时间:2019-01-25 05:49:48

标签: javascript

当我使用var关键字声明变量时,JS引擎在创建阶段将默认值分配给“消息”

console.log(message); //undefined       
var message = "My message";

但带有let关键字

console.log(message); //message is not defined       
let message = "My message";

为什么这种意外结果还是ES6中有所改变?

1 个答案:

答案 0 :(得分:3)

这是因为使用let创建了Temporal dead zone

  

let绑定在包含声明的(块)作用域的顶部创建,通常称为 “吊装” 。与以var开头的变量undefined声明的变量不同,let变量直到其定义被求值后才初始化。在初始化之前访问变量将导致ReferenceError。从该块的开始到初始化完成,该变量位于 “时间盲区” 中。

相关问题