Что отобразится в консоли при выполнении примера №92

Console.log('Test') вызывается сразу, до setTimeout. Node.js отклонит undefined вместо callback, а в браузере бесконечный цикл способен заблокировать вкладку.

Короткий ответ

Что ответить на собеседовании

Console.log('Test') вызывается сразу, до setTimeout. Node.js отклонит undefined вместо callback, а в браузере бесконечный цикл способен заблокировать вкладку.

Подробный разбор

Ответ с пояснениями

Условие

Укажите, какой текст будет выведен в консоль после исполнения следующего кода:

while (true) {
  setTimeout(console.log('Test'))
}

Ответ

Console.log('Test') вызывается сразу, до setTimeout. Node.js отклонит undefined вместо callback, а в браузере бесконечный цикл способен заблокировать вкладку.

В Node.js обычно будет один Test, затем TypeError. В браузере, допускающем строковый handler, цикл продолжает синхронно печатать Test и не освобождает поток для таймеров; политики безопасности могут изменить исход. Исправление — передавать функцию: setTimeout(() => console.log('Test'), 0), без бесконечного синхронного цикла.

Источник: nodejs.org, html.spec.whatwg.org.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее