Console.log('Test') вызывается сразу, до setTimeout. Node.js отклонит undefined вместо callback, а в браузере бесконечный цикл способен заблокировать вкладку.
Что отобразится в консоли при выполнении примера №92
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.