【发布时间】:2015-12-03 03:30:10
【问题描述】:
我了解以下功能,因为会发生变量提升。 foo();
function foo() {
console.log( a ); // undefined
var a = 2;
}
但是我不明白的是以下部分。 我得到了参考错误,为什么?
foo()
function foo() {
console.log( a ); // Reference Error
a = 2;
}
--- 编辑 ---
到目前为止,我从答案中了解到的是第二个没有进行任何提升,我们不能使用任何未定义的变量。
foo()
function foo() {
// we cannot use any undefined variable, which "a" here
console.log( a );
window.a = 2;
}
例如
var a;
a; //undefined
b; //Reference error
【问题讨论】:
-
由于没有
var声明,所以不会被提升,并且在全局空间之后日志语句中定义,所以抛出错误 -
您还能期待什么?
-
@Bergi
undefined也许 -
@Bergi 我不认为 so dupe 回答了与全局/本地范围有关的问题,这与提升有关。
-
@Tushar:你认为this 会是一个更好的骗子吗?
标签: javascript hoisting