采取以下功能:
function createGlobalVar() {
y = "foo";
}
y //"foo"
在没有关键字“var”的情况下,这会使 ya 成为局部变量,该函数会爬上作用域链以尝试查找 y 存在的位置。在没有任何预先存在的声明的情况下,它将 y 创建为全局变量。因此,我不需要在函数末尾添加 'return y' 以使 y 存在于它之外。
现在,如果我尝试做同样的事情,但将函数表达式分配给 y,它将无法正常工作。
function createGlobalVar() {
y = function() { alert("foo!") }
}
y //"undefined"
我知道如何纠正它以使其工作:
function createGlobalVar() {
y = function() { alert("foo!") }
return y;
}
var x = createGlobalVar();
x // function() { alert("foo!") }
但我不明白为什么我必须返回全局变量,因为它分配了一个函数表达式。有什么不同?