0

Заранее извиняюсь, если вопрос глупый, но нигде не смог найти ответа. Пишу свою первую программу и не могу разобраться почему:

btn.addEventListener("click", function hihi(){ alert('hihi'); });

срабатывает при нажатии на кнопку,

а вариант:

function hi() {alert('HI')};
btn.addEventListener("click", hi());

срабатывает сразу при загрузке страницы.

1 Answers1

1

Потому что hi() - это вызов фунции, а addEventListener ждёт ссылку на функцию - btn.addEventListener("click", hi).

  • Спасибо, а можно как-нибудь в конструкции btn.addEventListener("click", hi) передать функции hi какой-нибудь аргумент? – М Дмитрий Dec 04 '18 at 12:31
  • Можно обернуть вызов с аргументами в анонимную функцию, можно использовать замыкание, можно передать данные через атрибут элемента DOM, наконец использовать bind(). – Sergey Gornostaev Dec 04 '18 at 12:38
  • Еще раз спасибо – М Дмитрий Dec 04 '18 at 12:43