Добавьте clearTimeout(timer). В рамках того же синхронного выполнения callback таймера ещё не начал работу, поэтому его можно отменить.
Как отменить таймер после синхронного вывода
Добавьте clearTimeout(timer). В рамках того же синхронного выполнения callback таймера ещё не начал работу, поэтому его можно отменить.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Дан код const timer = setTimeout(() => console.log('timer'), 0); console.log('sync');. Что добавить непосредственно после него, чтобы timer не появился?
Ответ
Добавьте clearTimeout(timer). В рамках того же синхронного выполнения callback таймера ещё не начал работу, поэтому его можно отменить.
Нулевая задержка лишь делает таймер допустимым к выполнению позже, а не вызывает функцию внутри setTimeout. Отменять уже выполняющийся callback таким способом нельзя. Если код успел вернуть управление циклу событий, результат зависит от того, был ли callback запущен; для этой задачи важно именно расположение отмены в том же скрипте.