Что такое javascript:void(0);?

Рейтинг: 46Ответов: 6Опубликовано: 08.01.2015

Ребят, всем привет.
Есть сайт. Там есть ссылка с href="#". Что это? И как узнать, на что ссылается, и где этот скрипт? Есть доступ ко всем исходникам.

Ответы

▲ 44Принят

void(0) — это выражение, получающееся приведением типа константы 0 к void. То есть простое ничего не значащее выражение.

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

▲ 14

Когда браузер переходит по ссылке javascript:, то заменяет содержание страницы на возвращаемое значение, кроме случаев, когда вернулось undefined. Оператор void всегда возвращает это самое значение undefined.

Подробно (на англ.): https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/void

▲ 8

В старых браузерах была возможность создать переменную с именем undefined. Соответственно, чтобы получить значение undefined используется такая конструкция. Конструкции void можно передать любое число/тип переменной - void 123,void [] так же вернет undefined.

▲ 8

Конструкцию типа href="#" используют обычно тогда, когда вместе обычного перехода по ссылке должен сработать js скрипт.

Примеры таких случаев - открытие модального окна, отправка/получение данных с помощью ajax или необходимость проверить какие-то данные с помощью js перед тем как совершить переход по этой ссылке.

Чтобы найти скрипт, который срабатывает при клике на эту ссылку стоит посмотреть в режиме инспектора. Пример как это можно сделать, на скриншоте: Пример как увидеть обрабатывающий js скрипт

▲ 5

href="#" добавляют, чтобы при нажатии на ссылку, которая выполняет не свою прямую функцию, страница не прокручивалась вверх, а всё оставалось на месте

▲ 2

В данном случае - это то же самое, что return false;