назад до уроку

Який обробник запуститься?

У змінній button знаходиться кнопка. Спочатку на ній немає обробників.

Який з обробників запуститься? Що буде виведено під час кліку після виконання коду?

button.addEventListener("click", () => alert("1"));

button.removeEventListener("click", () => alert("1"));

button.onclick = () => alert(2);

Відповідь: 1 і 2.

Перший обробник спрацює, тому що він не був вилучений методом removeEventListener. Щоб видалити обробник, необхідно передати саме ту функцію, яка була призначена як обробник. Попри те, що код ідентичний, в removeEventListener передається нова, інша функція.

Щоб видалити функцію-обробник, потрібно десь зберегти посилання на неї, наприклад:

function handler() {
  alert(1);
}

button.addEventListener("click", handler);
button.removeEventListener("click", handler);

Обробник button.onclick спрацює все одно. Разом з addEventListener.