在javascript(jquery)调用中声明匿名函数时,闭包是如何工作的?

时间:2011-04-25 18:06:15

标签: javascript jquery

在此功能中:

var x = {
  getStuff : function(){
     var i = 0;
     $.getJSON('/url.json', {}, function(data){
        $.each(data, function(key,val){ 
          alert(i);
        });            
     });
  });
}

所以我正确理解为2个jquery调用(.getJSON,.each)声明的匿名函数由于关闭而都可以访问父函数(getStuff)吗?

这是否意味着在该位置声明的匿名函数位于其父级的范围链内,以便它们可以访问父变量?

1 个答案:

答案 0 :(得分:0)

除了通过变量“x”之外,匿名函数无法通过该名称访问“getStuff()”本身。他们可以访问变量“i”,或更正确地访问包含函数的本地作用域的实例化中的变量“i”,用于实例化匿名函数的调用。

每次调用“getStuff()”都会创建一个新的本地范围,每个范围都有自己的“i”和它自己的匿名函数。