试图了解从作用域链和执行上下文堆栈文章大卫·谢里夫的博客 ,我试图了解这里关闭
function foo() {
var a = 'private variable';
return function bar() {
alert(a);
}
}
var callAlert = foo();
callAlert(); // private variable
我只是想测试是否内功能刚刚从其父或从整个范围链可变对象 ,所以我添加了一个嵌套函数重复例如:
function foo() {
var a = 'private variable';
return function bar() {
return function foobar() {
console.log(a);
};
};
}
var callAlert = foo();
callAlert(); //
那就是不给任何结果。 这似乎解释甚至没有进入foobar的()函数。 而语法比其父相同。
但是,如果我把函数声明和执行它的工作原理。
function foo() {
var a = 'private variable';
return function bar() {
function ra() {
console.log(a);
};
return ra();
};
}
var callAlert = foo();
callAlert(); // private variable
而且真的我试图猜测为什么; 这里是从栏()的差异,foobar的()函数。
PS -我测试上的jsfiddle