Какая разница между <a onclick= "someFunction" >и <a onclick= "someFunction()" >

какая разница между

<a onclick="someFunction">

и

<a onclick="someFunction()">

Один использует скобки, а не другую, но каковы различия в использовании? Что такое "правильный" вариант? И что произойдет, если я не использую атрибут href?

Насколько я знаю, в javascript использование something = someFunc(); присваивает возвращаемое значение этой функции переменной something. И используя something = someFunc; назначает функцию напрямую (а не ее результат) этой переменной (И в основном она используется для назначения функций событиям). например Я могу назначить функцию событию onclick.

Но то, что я не понимаю, это то, что происходит при использовании либо в каком-то некотором html-элементе inline-событии, как в примерах, поскольку присваивание не относится к переменной javascript, а к атрибуту html, который, случается, является событием? Пожалуйста, объясните.

А также существует ли разница в назначении встроенной функции onclick привязке (a) к другим элементам (например, span div label и т.д.)? У них такой же эффект?

Sidenote: Я читал здесь о том, как запускать функцию при нажатии на ссылку, и я уже понял, что это не должно быть сделано "inline", но вместо этого ненавязчивый javascript. (Я упоминаю об этом, чтобы не обсуждать это), но в примерах, которые я видел, они не упоминают разницу в обоих вариантах, о которых я упоминаю, когда делаю это inline.

Изменить: этот вопрос был сделан, потому что здесь они дали ответ, который не использует скобки в функции для события, и никто не упоминал скобки, поэтому я предполагаю, что это действительно. но я не знаю, в чем отличие использования () или нет.

Ответ 1

Один использует скобки, а не другую, но каковы различия в использовании?

<a onclick="someFunction"> ничего не сделает. Скобки вызывают функцию, которую нужно вызвать.

Имея оператор, состоящий из ничего, кроме идентификатора (будь то имя функции, переменная или что-то еще), ничего не сделает (за исключением того, что вывести ссылочную ошибку, если переменная не существует).

И что произойдет, если я не использую атрибут href?

Тогда я бы поставил под вопрос, почему вы использовали элемент <a>.

А также существует ли разница в назначении встроенной функции onclick привязке (a) к другим элементам (например, метка span div и т.д.)?

Только то, что они не являются (по умолчанию) фокусируемыми элементами (и не является элементом без атрибута href), поэтому событие клика не может быть вызвано путем табуляции на элемент и нажатия клавиши ввода. Если вам нужен элемент, который будет делать что-то с JS при запуске, и у вас нет разумного резерва, когда JS недоступен, используйте кнопку.

Ответ 2

Значение атрибута обработчика события - это последовательность операторов Javascript , а не выражение.

Это свойство не присваивает значение функции; это кусок кода для выполнения на этом мероприятии.
Оставляя круглые скобки, результат в выражении выражения не имеет эффекта.

Ответ 3

при написании встроенных функций щелчка мы назначаем код, который будет выполняться в форме строки при щелчке элемента.

Это эквивалентно eval ('someFunction()'); мы не можем писать на click = 'someFunction', поскольку он будет эквивалентен eval ('someFunction'), который ничего не сделает. если вы намерены привязать обработчик кликов к тегу привязки, не забудьте добавить атрибут href= '#' в тег привязки.

Нет никакой разницы между назначением обработчика кликов для span или divs по сравнению с тегом привязки.