0
在这个函数:在javascript(jquery)调用中声明匿名函数时,closure如何工作?
var x = {
getStuff : function(){
var i = 0;
$.getJSON('/url.json', {}, function(data){
$.each(data, function(key,val){
alert(i);
});
});
});
}
所以,我在正确理解该声明的2次jQuery的调用(.getJSON,。每)的匿名函数都有因关闭访问父功能(getStuff)?
这是否意味着在该位置声明的匿名函数位于其父项的范围链中,以便它们可以访问父项变量?
所以,当你谈论自己的“我”时,如果我改变“我”会改变所有引用“x”变量由于文字语法的对象? – James 2011-04-25 18:17:11
@James:否 - 在进入函数的执行上下文时,会创建一个_new_ _VariableObject_(VA),并带有新的属性(链接到例如_i_) - 此对象将被放置在作用域链上创建/进入的任何函数_in_该上下文,所以这些将有权访问该_i_的特定实例。但是每输入一次函数,都会形成一个新的范围。 – 2011-04-25 18:21:17
@James什么肖恩上面写的是正确的。每次调用“getStuff()”都会分配一个新的存储块,这意味着新的“i”。 – Pointy 2011-04-25 18:25:57