вернуться к уроку

Что покажет setTimeout?

важность: 5

В приведённом ниже коде запланирован вызов setTimeout, а затем выполняется сложное вычисление, для завершения которого требуется более 100 мс.

Когда будет выполнена запланированная функция?

  1. После цикла.
  2. Перед циклом.
  3. В начале цикла.

Что покажет alert?

let i = 0;

setTimeout(() => alert(i), 100); // ?

// предположим, что время выполнения этой функции >100 мс
for(let j = 0; j < 100000000; j++) {
  i++;
}

Любой вызов setTimeout будет выполнен только после того, как текущий код завершится.

Последним значением i будет: 100000000.

let i = 0;

setTimeout(() => alert(i), 100); // 100000000

// предположим, что время выполнения этой функции >100 мс
for(let j = 0; j < 100000000; j++) {
  i++;
}