Встречается на собеседованиях • сегодня

Как сделать чтобы не было сбоев при большом количестве навешанных обработчиков

Для оптимизации большого количества обработчиков:

  1. Делегирование событий - вешаем один обработчик на родителя вместо множества на дочерние элементы:
js
document.querySelector('.parent').addEventListener('click', (e) => {
  if (e.target.matches('.child')) {
    // обработка клика
  }
});
  1. Троттлинг/дебаунсинг для частых событий (scroll, resize):
js
function debounce(fn, delay) {
  let timer;
  return () => {
    clearTimeout(timer);
    timer = setTimeout(fn, delay);
  };
}
window.addEventListener('resize', debounce(handler, 200));
  1. Удаление неиспользуемых обработчиков:
js
// При unmount компонента
element.removeEventListener('click', handler);
  1. Использование пассивных обработчиков для скролла:
js
window.addEventListener('scroll', handler, { passive: true });
  1. Оптимизация через requestAnimationFrame для анимаций.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы