【发布时间】:2023-04-02 03:40:02
【问题描述】:
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)没有报错?
why it should throw a referenceError
在 ECMAScript 2015 中,让我们将变量提升到块的顶部。但是,在变量声明之前引用块中的变量会导致 ReferenceError。从块开始到处理声明,该变量处于“临时死区”中。
问题是 bable 设置,我想。
所以,也许这是通天塔的一个错误? https://github.com/babel/babel.github.io/issues/826
【问题讨论】:
-
当你定义它时为什么会抛出错误
tmp = 'abc'; -
您对
tmp = 'abc'的原始用法是隐式声明一个变量。 -
请向我们展示您的 babel 设置。这肯定会引发错误,尽管如果您在松散模式下编译可能不会。
-
可能是 babel 的问题?我在 chrome 中运行此代码,它可以工作
-
@Bergi 这里是我的 .babelrc 文件内容
{ "presets":[ "babel-preset-es2015" ], "plugins": [ "babel-plugin-transform-es2015-destructuring", "babel-plugin-transform-es2015-modules-commonjs" ] }
标签: javascript ecmascript-6 babel-node