Помогите мне понять javascript: void (null)

Может кто-то, пожалуйста, помогите мне с этим javascript: void (null) Я нашел, что он используется в кнопках со ссылками следующим образом

<a onclick="ProcessResponse()" href="javascript:void(null)" >Accept Data</a>

Ответ 1

В основном происходит то, что onclick вызывается функция ProcessResponse(), а для параметра href установлено значение javascript:void(null), чтобы отключить поведение по умолчанию.

Большинство разработчиков просто используются для написания этого:

<a onclick="ProcessResponse(); return false;" href="#" >Accept Data</a>

Пример:

Предположим, что у нас есть эта ссылка:

<a onclick="ProcessResponse(); return false;" href="http://www.google.com" >Accept Data</a>

Обратите внимание, что href установлен на www.google.com, но когда вы на самом деле нажимаете на эту ссылку, он просто вызывает функцию ProcessResponse() и не переходит к www.google.com, потому что return false помещается после ProcessResponse() отключает поведение по умолчанию для ссылки, которая будет www.google.com. То же самое касается ссылки, которую вы опубликовали.

Ответ 2

void является оператором JavaScript, но иногда он ошибочно принимается за функцию из-за общего использования скобок, которые следуют за ним. Цель void - оценить выражение без возврата значения. Следовательно, любое выражение вообще может быть void ed, оно не должно быть null и нередко вы видите void(0) или реже, void 0.

Когда вы используете javascript: в атрибуте href, следующее выражение будет оценено и его результат будет возвращен. Это можно увидеть, введя следующее в адресное окно вашего браузера:

javascript:prompt("test");

Введите что-нибудь в появившемся окне и нажмите enter/щелкните ok. Вы заметите, что страница исчезнет, ​​и все, что вы набрали, появится. Теперь посмотрим, что произойдет, если мы добавим void 0;:

javascript:prompt("test"); void 0;

После нажатия кнопки "ОК" в приглашении ничего не происходит. Это void 0 handywork, оно возвращает undefined, и поэтому браузер ничего не делает. Это также относится к href в ссылках (не стесняйтесь попробовать). Все это можно было бы просто написать как javascript:void prompt("test");.

Как уже упоминалось, лучше использовать return false; из обработчика событий, а не использовать void в href. На самом деле, рекомендуется не использовать javascript: в атрибуте href вообще.

Ответ 3

javascript:void(null)= ничего не делать.

Обратите внимание, что в обработчике событий onclick есть javascript-вызов - что-то делает (я предполагаю, что он принимает данные, обрабатывая ответ;).

Ответ 4

Добавление команд void(0) в javascript - это общий трюк, когда вы используете псевдо-URL javascript: для запуска кода. Если вы опустите это, а script возвращает что-то, отличное от undefined, оно будет обработано так, как если бы оно было передано в document.write, то есть браузер переместится на пустую страницу.

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