if(true) {
tmp = 'abc';
console.log(tmp);//which should throw referenceError but not
let tmp;
console.log(tmp);
tmp = 123;
console.log(tmp);
}
此代码导致
abc
undefined
123
为什么第一个 console.log(tmp) 不会抛出错误?
为什么它应该抛出一个referenceError
在 ECMAScript 2015 中,let 将变量提升到块的顶部。但是,在变量声明之前引用块中的变量会导致 ReferenceError。从块开始到处理声明,该变量处于“临时死区”中。
问题是 bable 设置,我想。
所以,也许这是通天塔的一个错误? https://github.com/babel/babel.github.io/issues/826