【发布时间】:2012-08-09 22:58:29
【问题描述】:
我一直在使用 Object-Oriented JavaScript by Stoyan Stefanov 学习 Javascript
他提供了一个比较全局和本地范围的示例:
var a = 123;
function f() {
alert(a);
var a = 1;
alert(a);
}
f();
看这个例子,我预计第一个警报是“123”,第二个警报是“1”。瞧,斯托扬说:
您可能期望第一个 alert() 将显示 123(值 全局变量 a) 和第二个将显示 1 (本地 a)。 不是这种情况。第一个警报将显示“未定义”。这是 因为在函数内部,局部作用域比 全球范围。因此,局部变量会覆盖任何全局变量 同名。在第一个 alert() 的时候还没有定义 (因此值未定义)但它仍然存在于本地空间中。
我的解释不清楚,局部变量如何覆盖第一个警报中的全局变量?任何其他/不同的解释将不胜感激。
【问题讨论】:
标签: javascript