Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: addEventListener, event handler, callback function, DOM events, JavaScript

Как работает передача функций в addEventListener?

Этот вопрос проверяет понимание механизма передачи функций в качестве обработчиков событий в JavaScript, что важно для корректной работы с событиями в DOM.

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

Метод addEventListener принимает два основных аргумента: тип события и функцию-обработчик. Функция передаётся по ссылке и будет вызвана при наступлении указанного события. Можно передавать как именованные функции, так и анонимные. Важно не вызывать функцию сразу, а передавать её объявление, иначе она выполнится мгновенно, а не по событию.

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

Метод addEventListener — это стандартный способ подписки на события DOM-элементов в JavaScript. Он принимает минимум два аргумента: строку с названием события (например, 'click') и функцию-обработчик, которая будет выполнена при срабатывании события. Передача функции происходит по ссылке, что позволяет использовать один и тот же обработчик для нескольких элементов или событий.

Как передавать функцию

Ключевой момент — передавать саму функцию, а не результат её вызова. Если поставить скобки после имени функции, она выполнится немедленно, и в addEventListener попадёт её возвращаемое значение (часто undefined), что не сработает.

// Правильно: передаём функцию
button.addEventListener('click', handleClick);

// Неправильно: вызываем функцию, передаём её результат
button.addEventListener('click', handleClick()); // Ошибка!

// Анонимная функция тоже работает
button.addEventListener('click', function() {
  console.log('Клик!');
});

// Стрелочная функция
button.addEventListener('click', () => {
  console.log('Клик от стрелочной функции!');
});

Контекст и объект события

При вызове обработчика ему передаётся объект события (Event), содержащий информацию о произошедшем (координаты, целевой элемент и т.д.). Контекст (this) внутри обычной функции, переданной в addEventListener, будет ссылаться на элемент, на котором висит обработчик. В стрелочных функциях this берётся из внешней области.

button.addEventListener('click', function(event) {
  console.log(this); // button element
  console.log(event.type); // 'click'
});

// В стрелочной функции this — из внешнего контекста
button.addEventListener('click', (event) => {
  console.log(this); // window (если в глобальной области)
});

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

Этот механизм используется повсеместно для интерактивности веб-страниц: обработка кликов, ввода текста, отправки форм, движения мыши. Он позволяет отделить логику поведения от разметки (в отличие от атрибутов типа onclick в HTML). Также можно добавлять несколько обработчиков на одно событие для одного элемента.

Вывод: Передавайте функцию-обработчик в addEventListener по ссылке, без вызова. Используйте этот метод для гибкой и поддерживаемой работы с событиями в современных веб-приложениях.

Уровень

  • Рейтинг:

    4

  • Сложность:

    2

Навыки

  • JavaScript

    JavaScript

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

#addEventListener

#event handler

#callback function

#DOM events

#JavaScript

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