レッスンに戻る

setTimeout は何を表示するでしょう?

重要性: 5

下のコードで、スケジュールされた setTimeout 呼び出しがあります。その後、完了までに 100ms 以上かかる重い計算が実行されます。

スケジュールされた関数はいつ実行されるでしょう?

  1. ループの後
  2. ループの前
  3. ループの最初

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++;
}