Сохраните обработчик в переменной и передайте ту же функцию при удалении; также должен совпадать флаг capture.
Как корректно удалить обработчик `scroll`, если `addEventListener` и `removeEventListener` должны получить одну и ту же ссылку на функцию?
Сохраните обработчик в переменной и передайте ту же функцию при удалении; также должен совпадать флаг capture.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Сохраните обработчик в переменной и передайте ту же функцию при удалении; также должен совпадать флаг capture.
Например:
const onScroll = () => console.log(window.scrollY);
window.addEventListener('scroll', onScroll, { passive: true });
// При завершении работы:
window.removeEventListener('scroll', onScroll);
Две внешне одинаковые стрелки — разные ссылки. Если обработчик обёрнут в throttle, сохранять нужно именно результат обёртки, а при cleanup отменять её отложенный вызов.