JavaScriptのfor文の中での関数実行に関する質問です
質問は、なぜ関数がfor文の回数分実行されるのかについてです。
参考サイトhttps://qiita.com/ukiuni@github/items/463493a690265cec8bb7
javascript
1for (var i = 0; i < 3; i++) { 2 setTimeout(function() { 3 console.log(i); 4 }, 0); 5}
様々なサイトで、for文実行中は関数が実行されずに、終了後にiの最後の値を参照して実行されるという記述を見ました。しかし、for文が終了した後に、関数の実行回数がfor文の回る回数と同じになっていることが理解できません。for文実行中に、○○回回ったという情報がどこかに記憶されて、for文終了後に関数を実行する際、iは最後の値だけを見て、回数はその記憶から引っ張り出してくるから、iは最後の値のまま5回回るという結果になるのでしょうか?
クロージャなどがまだ理解できず、すごく単純に以下のように考えています。
・for文が終わったのであれば、関数の実行は1回だけのはず。なぜならforという繰り返し処理が終わっているのだから
・しかし実際はfor文のブロックの中に関数がいるので、関数は繰り返し処理に含まれている
・繰り返し処理に含まれていて、関数の外にある変数も参照できるのあれば、iも参照できるはずで、iを参照できるなら、iの数が変わったことも関数内でわかるはず
なぜ関数はfor文の回数分実行されるのでしょうか?