Подтвердить что ты не робот

Многие люди пишут `javascript: void (0)` вместо `javascript: void 0` в hrefs. Скольчают ли скобки?

Я вижу, что люди пишут void(0) все время, но я не понимаю, почему люди используют круглые скобки. Насколько я могу судить, у них нет никакой цели. void не является функцией, это оператор. Так почему люди используют паренс? Они служат цели? Даже на MDN используются парсеры.

4b9b3361

Ответ 1

Я должен признать, что я использовал эту же конструкцию много раз в прошлом, главным образом потому, что видел, что она используется на других сайтах. Я больше не использую это, потому что ненавязчивый JavaScript предпочтительнее встроенного JavaScript; на самом деле, он почти исключительно используется inline, чтобы убедиться, что страница не обновляется.

Сказав это, как вы по праву отметили, это оператор, а не функция; причина, по которой она все еще работает, - это просто потому, что (0) и 0 - одно и то же, так вот как это будет оцениваться:

void (0);

Что идентично:

void 0;

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

<a href="javascript:void 0">...</a> // hold on, that can't work, can it?!

<a href="javascript:void(0)">...</a> // ahhh, normality restored

Ответ 2

"Так почему люди используют парнеры?"

Люди делают глупые вещи.

"Они служат цели?"

Нет, они не нужны.

Ответ 3

Эта ссылка объясняет это вам.

Одна вещь, поясняющая это, заключается в том, что void является оператором (а не функцией). Поскольку эта пустота (0) технически некорректна, хотя на практике реализация позволяет использовать его таким образом, чтобы его можно было использовать без скобки, например. void 0.

Поэтому его технически неправильно использовать void(0), но на практике void имеет два разных синтаксиса:

void (expression)
void expression

MDN уже говорит вам, что хотя явный оператор не был сделан относительно двух синтаксисов, поскольку он не является технически корректным.

Предоставлено: