Иногда вижу такие ссылки
<a href="javascript:void(0)">Войти</a>
и void 0 тоже используется в библиотеке Backbone.js, например:
if (obj == null) return void 0;
Что значит void 0, и для чего оно нужно?
Иногда вижу такие ссылки
<a href="javascript:void(0)">Войти</a>
и void 0 тоже используется в библиотеке Backbone.js, например:
if (obj == null) return void 0;
Что значит void 0, и для чего оно нужно?
Оператор void[MDN][спецификация] вычисляет переданное выражение и всегда возвращает undefined.
Примеры:
void 0 // возвращает undefined
void(0) // это тоже возвращает undefined
void "привет" // тоже возвращает undefined
void new Date() // всегда возвращает undefined
Если void 0 всегда возвращает undefined, можно просто использовать undefined, разве нет?
Можно. На самом деле, void не очень полезный оператор, и я его использую очень редко. Но он пригодится в некоторых ситуациях:
В старых браузерах (я не уверен в каких именно. По-моему, в IE 6 и ниже и в Netscape) была возможность изменить значение undefined:
undefined = 5; // в старых браузерах изменит значение undefined,
// в новых ничего не делает
5 === undefined; // true в старых браузерах, false в новых
Не всегда известно, что undefined значит undefined. Поэтому некоторые библиотеки используют void 0.
Даже в новых браузерах undefined - допустимое имя переменной внутри функции:
function f() {
var undefined = 5;
return undefined;
}
f(); // возвращает 5
Но если вы пишете такой код, это ваша вина.
void 0 на три символа короче undefined. Хотя 0[0] еще короче.Ссылка, начинающаяся с javascript:, обычно отправляет пользователя на страницу с текстом, который код возвращает. Например:
Нажимай <a href="javascript: 'Привет!'">СЮДА</a>!
Но если вы хотите, чтобы ссылка никуда не отправляла пользователя, надо как-то вернуть undefined. Традиционно люди используют void(0), но undefined и другие варианты тоже работают.
<a href="javascript:void(0)">Войти</a>
void 0?Это только традиция; void 0 - простой и короткий код. Другие варианты, такие как void 9 и void "привет", тоже работают.