В чем разница между StopPropagation и StopImmidiatePropagation

«В чем разница между StopPropagation и StopImmidiatePropagation» — вопрос из категории JavaScript, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

stopPropagation() останавливает дальнейшее всплытие (bubbling) события вверх по DOM-дереву, но другие обработчики на этом же элементе все равно сработают.

stopImmediatePropagation() делает то же самое, но дополнительно предотвращает выполнение любых других обработчиков на текущем элементе.

Пример:

button.addEventListener('click', (e) => {
  e.stopPropagation(); // Остановит всплытие, но второй обработчик сработает
  console.log('First handler');
});

button.addEventListener('click', (e) => {
  console.log('Second handler'); // Выполнится
});

// С stopImmediatePropagation
button.addEventListener('click', (e) => {
  e.stopImmediatePropagation(); // Остановит всплытие и другие обработчики
  console.log('First handler (immediate)');
});

button.addEventListener('click', () => {
  console.log('Second handler (never runs)'); // Не выполнится
});