クライアント側アプリケーションの開発中に、クロージャの使用についての私の不完全な理解に関連していると私が信じるエラーに遭遇しました。私は自分のコードを次のように切り詰めました:
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"
このエラーが発生する理由と、fn1によって返されるクロージャ関数のローカルスコープで定義された変数にfn2がアクセスできない理由を知りたいのですが。