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
この記事に助けられた。。