Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: event listener, addEventListener, removeEventListener, event handling, memory leak

Что происходит при добавлении и удалении eventListener?

Этот вопрос проверяет понимание механизма работы event listeners в JavaScript, что важно для управления событиями и предотвращения утечек памяти.

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

При добавлении eventListener функция-обработчик регистрируется для указанного события на элементе. При возникновении события эта функция выполняется. Удаление eventListener отменяет эту регистрацию, и функция больше не будет вызываться. Важно удалять слушатели, когда они больше не нужны, особенно для элементов, которые удаляются из DOM, чтобы избежать утечек памяти.

Длинный ответ

Event listeners (слушатели событий) — это функции, которые "слушают" определённые события (например, клик, наведение мыши, ввод с клавиатуры) на элементах DOM и выполняются при их возникновении. Механизм добавления и удаления является ключевым для интерактивности веб-страниц и управления ресурсами.

Добавление addEventListener

Метод addEventListener регистрирует переданную функцию-обработчик для события на целевом элементе. Вы можете добавить несколько обработчиков для одного и того же события на одном элементе. Обработчик получает объект события (Event), содержащий полезную информацию.

const button = document.getElementById('myButton');
function handleClick(event) {
    console.log('Кнопка нажата!', event.target);
}
// Добавляем слушатель
button.addEventListener('click', handleClick);

Удаление removeEventListener

Метод removeEventListener удаляет ранее зарегистрированный обработчик. Для успешного удаления необходимо передать те же самые аргументы: тип события и ссылку на ту же самую функцию. Анонимные функции удалить невозможно, поэтому рекомендуется использовать именованные функции.

// Удаляем слушатель
button.removeEventListener('click', handleClick);
// Теперь handleClick больше не будет вызываться при клике.

Практическое применение и важные аспекты

  • Управление памятью: Если элемент удаляется из DOM, но слушатель на нём остаётся, функция и элемент могут не освобождаться сборщиком мусора (утечка памяти). Всегда удаляйте слушатели перед удалением элемента.
  • Параметр options: В современном JavaScript addEventListener принимает третий параметр — объект options с настройками вроде { once: true } (выполнить обработчик только один раз) или { passive: true } (для улучшения производительности скролла).
  • Фазы события: Третий параметр может быть булевым значением useCapture, определяющим, на какой фазе (захвата или всплытия) будет вызван обработчик.

Вывод: Используйте removeEventListener для очистки, когда обработчик события больше не нужен (например, при уничтожении компонента в SPA-фреймворке), чтобы обеспечить предсказуемость поведения приложения и избежать утечек памяти.

Уровень

  • Рейтинг:

    4

  • Сложность:

    3

Навыки

  • JavaScript

    JavaScript

  • HTML

    HTML

Ключевые слова

#event listener

#addEventListener

#removeEventListener

#event handling

#memory leak

Подпишись на React Developer в телеграм