TGViewer
Задачи по JS/CSS/HML Задачи по JS/CSS/HML @frontquizes · 1.55K subscribers
Post #76 2.49K
Вопрос на JavaScript собеседовании.

Что выведет этот код?
for (var i = 0; i < 4; i++) {
setTimeout(() => console.log(i), 0)
}


Ответ:

На экране будут четыре четвёрки.

Здесь классическая ловушка с нулевыми задержками. Дело в том, что setTimeout (callback, 0) не означает, что обратный вызов функции сработает через ноль миллисекунд.

Вот что происходит тут на самом деле:

Текущий стек вызовов установлен на первый setTimeout ().
windows.setTimeout () — это веб-API, и он не блокирует ввод-вывод при работе с функциями. Это значит, что через 0 миллисекунд наша анонимная функция будет отправлена в очередь, а не в стек вызовов. А в очереди она подождёт, пока основная программа не закончит свои дела и не вернётся к очереди.
Поскольку стек вызовов свободен, цикл for может продолжиться до второго setTimeout (), потом до третьего и до четвёртого.
Теперь цикл завершён, и i равно 4. Теперь JS может выполнять очередь вызовов один за другим. В итоге каждый console.log (i) выведет 4.


#js #собеседование
  • 👍 19
  • 🔥 4
More from @frontquizes
  1. Sep 25, 2026711 собесдований и 51 оффер получили наши ученики за лето - 370k -> Инфра, облачный провай…
  2. Aug 26, 2026Вопрос на CSS собеседовании. У элемента button установлено значение 16px для свойства font…
  3. Jun 27, 2026🚀 Ищешь работу во frontend-разработке? В канале Javascript Pro публикуются свежие ваканси…
  4. Jun 25, 2026Вопрос на JavaScript собеседовании. Какова разница между == и ===? Ответ: Оператор равенст…
  5. Sep 5, 2025Вопрос на JavaScript собеседовании. Как проверить, что две строки являются анаграммами дру…
  6. Aug 27, 2025Вопрос на CSS собеседовании. Как работает псевдокласс :placeholder-shown? Ответ: Псевдокла…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →