Как отменить таймер после синхронного вывода

Добавьте clearTimeout(timer). В рамках того же синхронного выполнения callback таймера ещё не начал работу, поэтому его можно отменить.

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

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

Добавьте clearTimeout(timer). В рамках того же синхронного выполнения callback таймера ещё не начал работу, поэтому его можно отменить.

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

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

Условие

Дан код const timer = setTimeout(() => console.log('timer'), 0); console.log('sync');. Что добавить непосредственно после него, чтобы timer не появился?

Ответ

Добавьте clearTimeout(timer). В рамках того же синхронного выполнения callback таймера ещё не начал работу, поэтому его можно отменить.

Нулевая задержка лишь делает таймер допустимым к выполнению позже, а не вызывает функцию внутри setTimeout. Отменять уже выполняющийся callback таким способом нельзя. Если код успел вернуть управление циклу событий, результат зависит от того, был ли callback запущен; для этой задачи важно именно расположение отмены в том же скрипте.

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

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

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

Подробнее