2014-10-31 77 views
0

我想了解JavaScript中的关闭。闭包是函数的局部变量 - 在函数返回后保持活动[reference]。Javascript关闭 - 父功能

在很多参考文献中,我看到他们在描述函数的关闭时考虑了父函数。但根据下面的例子中,我认为一个功能,可以在父功能访问不仅是变量,而且在盛大的父母及以上..

有人可以解释,如果我认为是正确与否? 预先感谢您..

test1 = function() { 
    var x = 10; 
    return function(){ 
    alert(++x); 
    }; 
} 

test2 = function() { 
    var x = 10; 
    return function(){ 
    return function(){ 
     alert(++x); 
    } 
    }; 
} 

t1 = test1(); 
t1(); //11 
t1(); //12 
t2 = test2()(); 
t2(); //11 
t2(); //12 
+1

我想你错过了'test1'顶部的一些代码 – 2014-10-31 13:38:50

+2

如果一个父函数可以访问一个变量,那么孩子也可以。它不依赖* * immediate * parent中明确定义的变量。 – 2014-10-31 13:39:07

+1

这里唯一重要的是变量的范围(变量被定义的地方)。您可以像定义变量一样访问最高级别。 – 2014-10-31 13:41:03

回答

1

是,每个范围先后获得其父的范围,这是一个传递关系 - 当你的父母范围可以从你的祖父母访问的变量,你可以访问的变量从你的父母那里,那么你也可以访问你的祖父母(及其父母)的人。