这是我在学习 javascript 范围时发现的一些有趣的东西。
代码
var foo = "This is a global variable.";
var bar = function() {
alert(foo);
foo = "Value has been modified";
}
bar();
alert(foo);
这给出了您认为会得到的正常响应,但是如果我更改这一行:
从:
foo = "Value has been modified";
至:
var foo = "Value has been modified";
我得到 foo 的 undefined 值,这是为什么呢?既然函数是全局范围的,为什么它不接受前面的var关键字?
编辑
现在我基本上明白了功能栏中发生的事情会因为 var 关键字var foo
而变得最重要并被提升,但它会在没有分配值的情况下被提升。