var scope = "global scope";
function checkscope(){
var scope = "local scope";
function f(){
return scope;
}
return f;
}
checkscope()(); //local scope
和
var scope = "global scope";
function checkscope(){
var scope = "local scope";
function f(){
return scope;
}
return f;
}
var foo = checkscope();
foo(); //local scope
两段代码的结果一样,想请问一下各位大佬期中的奥秘。第二段代码的foo是一个函数表达式,不应该获取全局变量吗?
并不是闭包获取变量,而是通过匿名函数闭包处理,动态保存生成匿名函数时的变量值。
你这个代码只是因为匿名函数中函数块作用域中优先本地变量,而忽略了全局变量而已。
你其实比较2个部分,foo这时的值就是一个函数定义啊。