実際のシナリオからjavascriptクロージャを理解しようとしています。理論的にはわかっていますが、クロージャの内部関数は、内部関数関数。JavaScriptのクロージャを理解する小さな例
私はstackOverflowでもいくつかの質問を読んでいます。
ここで何が起こっているのか分かりません。
var foo = [];
for(var i=0;i<10;i++){
foo[i] = function(){
return i;
}
}
console.log(foo[0]());
は、これは10の記事のほとんどは、時間によってそれがインナー無名関数、ループの結果であるループに存在する最後の値として実行なっているに達していると言って私を与えます10が印刷されています。
しかし、私はまだこれの底に到達することができません。逆に
私のようなものを使用した場合、:
var foo = [];
for(var i=0;i<10;i++){
(function(){
var y =i;
foo[i] = function(){
return y;
}
})();
}
console.log(foo[0]());
を私はoutput.Anyのヘルプは高く評価されるだろう取得しています。
@hackkerdaveは私が右の私の最初の例ではVAR yを使用していなかったのに役立ちますか? –
ああ、申し訳ありませんが、エラーが修正されます – hackerrdave