JavaScriptのグローバル変数とか難しすぎ!

今、ドットインストールでjavaScriptの勉強しているのですが、グローバル変数とかのところで悩みまくりです。

半日ほど、クソ悩んでいたことが今わかったのでメモしておきます。いやー疲れた。

var i=11111,
ff=[];
for (i = 0; i <1; i++) {
b= function(){
alert(i);
}
ff[i]= i;
};
b();                             //結果は1と表示される

console.log(ff);   //結果は[0]と表示される

 

上のコードなんですか、b()を実行すると結果が0になると思っていました。でもどうやらfor文の中でfunctionを使うとそのfunction内の変数iは0にはならず、変数iが保たれたままbに代入されるらしいです。なのでb()が実行された時のiの値が代入され結果は1となるようです。

 参考になった記事:http://taiju.hatenablog.com/entry/20091118/1258544471

この記事に助けられた。。