Интересный способ сброса setTimeout и setInterval

Если нам нужно отменить запуск setTimeout или setInterval, то обычно используем такую конструкцию:

const timeoutId = setTimeout(() => {}, 100);

clearTimeout(timeoutId);

Основное неудобство в запоминании timeoutId, но можно сделать ф-цию обертку, которая позволит нам избавиться от timeoutId:

function timer(cb, timeout) {
  const timeoutId = setTimeout(cb, timeout);
  return () => clearTimeout(timeoutId);
}
const destroyTimer = timer(()=> {}, 1000);

destroyTimer();

За счет сохранения timeoutId внутри функции за счет замыкания, нам можно забыть о timeoutId

Такой же трюк можно провернуть и с EventListener:

function listen(element, event, cb) {
  element.addEventListener(event, cb, false);

  return () => element.removeEventListener(event, cb, false);
}

const unlisten = listen(element, 'click', () = {} );
unlisten();