@dusun

Почему JS код работает следующим образом?

Добрый день. Есть типичный вопрос на собеседовании:
Каков будет результат выполнения следующего кода:
for (var i = 0; i < 10; i++) { 
  setTimeout(function () { 
    console.log(i); 
  }, 0); 
}

Выведет 10 раз число 10. Я совсем забыл почему так работает? Можете мне напомнить? Спасибо.
  • Вопрос задан
  • 133 просмотра
Пригласить эксперта
Ответы на вопрос 3
@kzoper
https://developer.mozilla.org/en-US/docs/Web/JavaS...

Zero delay doesn't actually mean the call back will fire-off after zero milliseconds. Calling setTimeout with a delay of 0 (zero) milliseconds doesn't execute the callback function after the given interval. The execution depends on the number of waiting tasks in the queue.
Ответ написан
Комментировать
@RidgeA
В замыкание попадет ссылка на `i`, а функция по таймеру отработает уже после того как пройдет цикл и i на тот момент уже 10 будет.
Ответ написан
@tyzberd
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы