Как корректно удалить обработчик `scroll`, если `addEventListener` и `removeEventListener` должны получить одну и ту же ссылку на функцию?

Сохраните обработчик в переменной и передайте ту же функцию при удалении; также должен совпадать флаг capture.

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

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

Сохраните обработчик в переменной и передайте ту же функцию при удалении; также должен совпадать флаг capture.

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

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

Сохраните обработчик в переменной и передайте ту же функцию при удалении; также должен совпадать флаг capture.

Например:

const onScroll = () => console.log(window.scrollY);
window.addEventListener('scroll', onScroll, { passive: true });
// При завершении работы:
window.removeEventListener('scroll', onScroll);

Две внешне одинаковые стрелки — разные ссылки. Если обработчик обёрнут в throttle, сохранять нужно именно результат обёртки, а при cleanup отменять её отложенный вызов.

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

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

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

Подробнее