【发布时间】:2018-05-17 23:45:05
【问题描述】:
我不太明白下面的 sn-p 发生了什么。
由于时间死区,我预计会出现错误,但看起来const baz = '123123'; 被提升了。
一切正常的原因是什么?
class Foo {
constructor() {
console.log('Foo baz is:', baz)
}
}
function log() {
console.log('log baz is:', baz);
}
const baz = '123123';
log();
new Foo();
【问题讨论】:
-
这是一个 temporal 死区,而不是 syntactic 死区,所以如果你只访问变量(在你的函数调用中)之后初始化你很好。如果您之前调用了该函数,它仍然会访问该范围内的相同“提升”变量,但它会抛出异常。
标签: javascript scope hoisting