Определите порядок вывода чисел в консоль

В показанном фрагменте вывода нет: все строки закомментированы. Если убрать // и выполнить их подряд, порядок будет 1, 7, 3, 5, 2, 6, 4.

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

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

В показанном фрагменте вывода нет: все строки закомментированы. Если убрать // и выполнить их подряд, порядок будет 1, 7, 3, 5, 2, 6, 4.

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

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

Условие

Нужно установить, в каком порядке будут напечатаны цифры при выполнении данного кода.

 // console.log(1);
// setTimeout(() => console.log(2));
// Promise.resolve().then(() => console.log(3));
// Promise.resolve().then(() => setTimeout(() => console.log(4)));
// Promise.resolve().then(() => console.log(5));
// setTimeout(() => console.log(6));
// console.log(7);

Ответ

В показанном фрагменте вывода нет: все строки закомментированы. Если убрать // и выполнить их подряд, порядок будет 1, 7, 3, 5, 2, 6, 4.

Сначала выполняются синхронные console.log(1) и console.log(7). Затем очередь микрозадач выводит 3 и 5; расположенный между ними обработчик Promise лишь регистрирует таймер 4.

Таймеры 2 и 6 были зарегистрированы раньше, поэтому при обычном выполнении в одном окружении с одинаковой нулевой задержкой идут перед таймером 4. Важно различать постановку callback в очередь и его фактическое выполнение. Ни один then не запускается посреди текущего синхронного фрагмента.

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

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

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

Подробнее