Как отменить callback таймера после присваивания x=4?

Допишите clearTimeout(timer). Идентификатор таймера доступен, и отмена произойдёт до его выполнения; изменение x само по себе никак не отменяет запланированную задачу.

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

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

Допишите clearTimeout(timer). Идентификатор таймера доступен, и отмена произойдёт до его выполнения; изменение x само по себе никак не отменяет запланированную задачу.

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

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

Условие

Дан код let x=1; const timer=setTimeout(()=>console.log(x),1000); x=4;. Не изменяя предыдущие строки, нужно дописать безопасную команду, отменяющую этот ещё не выполненный callback. Блокировать поток бесконечным циклом нельзя.

Ответ

Допишите clearTimeout(timer). Идентификатор таймера доступен, и отмена произойдёт до его выполнения; изменение x само по себе никак не отменяет запланированную задачу.

Если таймер уже выполнился, отмена не откатит его побочные эффекты. Поэтому здесь явно задано, что добавленная команда идёт синхронно до срабатывания. Бесконечный цикл лишь подвесил бы основной поток, а не корректно отменил работу. В компоненте UI такой cleanup обычно выполняют при уходе со страницы или смене параметров.

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

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

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

Подробнее