我看到了一些 Javascript 代码,我偶然发现了这样的东西:
function() {
if(true) {
var a = 5;
}
alert(a);
}
我很确定这会输出 undefined 但它没有?谁能告诉我为什么?
最佳答案
JavaScript 具有函数级作用域,而不是 block 级作用域。
var
语句被提升,因此您的代码等同于:
function() {
var a;
if(true) {
a = 5;
}
alert(a);
}
如果 JavaScript 有 block 级范围,那么它仍然不会输出 undefined
。由于 a
在 alert
语句中未声明,您将触发引用错误。
关于javascript - 期望在 Javascript 中未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24064544/