@hatrid
Учусь web программированию

Зачем ставить скобки после функции в атрибуте обработчика событий?

Когда вы "вешаете" обработчик событий через addEventListener, вторым аргументом вы указываете функцию, которая должна будет выполнится, когда пользователей будет как-либо взаимодействовать с элементом, причём функция указывается без скобок:
document.querySelector('div').addEventListener('click', func);
, что вполне логично, ведь нам важен не код функции, а не её результат.
Однако, если добавить обработчик событий через соответствующий определённому событию html атрибут, то после функции надо ставить скобки: <div onclick="func()"></div>. Почему в этом случае скобки надо ставить, а в первом - нет?
  • Вопрос задан
  • 101 просмотр
Пригласить эксперта
Ответы на вопрос 2
@DanKud
Потому что внутри onclick добавляется код, который должен выполниться, а не передается функция.
Эта запись будет аналогична такой:
document.querySelector('div').addEventListener('click', () => {
    func();
});
Ответ написан
ArsenyMatytsyn
@ArsenyMatytsyn
Teamlead команды разработчиков iAmStudio
JS язык не благородный, у него плохо с переносами строк, поэтому, чтобы они не склеились, существует его пунктуация, скобки фигурные, круглые, точка с запятой. И это будет работать без точки с запятой, если есть перенос строки в коде и код не минифицирован.
Как я говорил выше, JS язык не благородный, поэтому можно иногда насрать на пунктуацию.
В случае же с onclick, то там в любом случае не будет смешивания действий, как это может быть в отдельной JS-файле. За исключением случаев, когда тебе не надо выполнить 2 и более действий, тогда они также разделяются точкой с запятой.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы