setTimeout は何を表示するでしょう?
重要性: 5
下のコードで、スケジュールされた setTimeout
呼び出しがあります。その後、完了までに 100ms 以上かかる重い計算が実行されます。
スケジュールされた関数はいつ実行されるでしょう?
- ループの後
- ループの前
- ループの最初
alert
は何を表示するでしょう?
let i = 0;
setTimeout(() => alert(i), 100); // ?
// この関数を実行する時間は 100ms より多いと仮定する
for(let j = 0; j < 100000000; j++) {
i++;
}
どの setTimeout
も現在のコードが完了した後にだけ実行されます。
i
は最後のもの 100000000
になるでしょう。
let i = 0;
setTimeout(() => alert(i), 100); // 100000000
// assume that the time to execute this function is >100ms
for(let j = 0; j < 100000000; j++) {
i++;
}