Что произойдёт при повторной подписке на один и тот же обработчик? Как изменится порядок вызовов?

При повторной подписке на один и тот же обработчик (например, в системе событий или на DOM-события в JavaScript) обычно происходит добавление этого обработчика в список слушателей ещё раз.

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

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

При повторной подписке на один и тот же обработчик (например, в системе событий или на DOM-события в JavaScript) обычно происходит добавление этого обработчика в список слушателей ещё раз. Это значит, что при событии обработчик вызовется столько раз, сколько раз он был подписан.

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

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

Условие

Что произойдёт при повторной подписке на один и тот же обработчик? Как изменится порядок вызовов?

Ответ

При повторной подписке на один и тот же обработчик (например, в системе событий или на DOM-события в JavaScript) обычно происходит добавление этого обработчика в список слушателей ещё раз. Это значит, что при событии обработчик вызовется столько раз, сколько раз он был подписан.

Порядок вызовов при этом не меняется: обработчики вызываются в порядке их добавления. Если один и тот же обработчик добавлен несколько раз, он будет вызван несколько раз подряд в тех местах, где он был добавлен.

Пример на JavaScript:

const button = document.querySelector('button');
function handler() {
  console.log('Clicked');
}

button.addEventListener('click', handler);
button.addEventListener('click', handler);

// При клике в консоль выведется:
// Clicked
// Clicked

Если нужно избежать повторных подписок, обычно перед добавлением проверяют, не подписан ли уже обработчик, или используют методы, которые не добавляют дубликаты (например, once или удаляют обработчик перед повторным добавлением).

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

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

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

Подробнее