重複の可能性:ループ内の Javascript クロージャー -タイムアウト後のループ内の JavaScript 変数スコープ/クロージャーの
簡単な実用例
結果が異なる理由を順を追って説明していただけますか?
スニペット A (アラート 10)
for(var i=0; i<10; i++) if(i==3) setTimeout(function() {alert(i);}, 100);
スニペット B (アラート 3)
for(var i=0; i<10; i++) if(i==3) setTimeout((function(p) {
return function() {alert(p);}
} )(i), 100);