Вывод будет 1, 3, 2. setTimeout с задержкой 0 регистрирует отложенный callback, но не прерывает выполнение текущего JavaScript-кода.
Что отобразит консоль в данном фрагменте кода
Вывод будет 1, 3, 2. setTimeout с задержкой 0 регистрирует отложенный callback, но не прерывает выполнение текущего JavaScript-кода.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Определите порядок вывода в консоль для следующего JavaScript‑кода:
console.log(1);
setTimeout(() => console.log(2), 0);
console.log(3);
Ответ
Вывод будет 1, 3, 2. setTimeout с задержкой 0 регистрирует отложенный callback, но не прерывает выполнение текущего JavaScript-кода.
Сначала выполняется console.log(1), затем ставится таймер, после чего немедленно печатается 3. Когда текущий стек освободится и среда перейдёт к готовой задаче таймера, появится 2. Нулевая задержка означает отсутствие запрошенного дополнительного ожидания, а не синхронный вызов.