在开发客户端应用程序时,我遇到了一个错误,我认为这与我对使用闭包的不完全理解有关。我已将代码缩减为以下内容:
var fn1 = function(arr){
return function(val){
var idx;
var x = 20;
for (idx in arr) {
arr[idx]();
}
}
}
var fn2 = fn1([function(){
x+= 20;
alert(x);
}])
现在在执行时:
fn2()
我收到一个错误:
ReferenceError: reference to undefined property "x"
我想知道为什么会出现这个错误,为什么 fn2 不能访问在 fn1 返回的闭包函数的局部范围内定义的变量?