Что означает "void 0"?

Возможный дубликат:
Что означает "javascript:void(0)"?

Читая исходный код Backbone.js, я увидел это:

validObj[attr] = void 0;

Что такое void 0? Какова цель использования здесь?

3 ответа

Решение

Что значит void 0 имею в виду?

void [MDN] - префиксное ключевое слово, которое принимает один аргумент и всегда возвращает undefined,

Примеры

void 0
void (0)
void "hello"
void (new Date())
//all will return undefined

Какой в ​​этом смысл?

Это кажется довольно бесполезным, не так ли? Если он всегда возвращается undefinedчто не так просто использовать undefined сам?

В идеальном мире мы могли бы просто безопасно использовать undefined: это намного проще и легче понять, чем void 0, Но в случае, если вы никогда не замечали раньше, это не идеальный мир, особенно когда речь идет о Javascript.

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

alert(undefined); //alerts "undefined"
var undefined = "new value";
alert(undefined) // alerts "new value"

Примечание. Это больше не является проблемой в любой среде, которая поддерживает ECMAScript 5 или более новую версию (т.е. практически везде, кроме IE 8), которая определяет undefined свойство глобального объекта как доступное только для чтения (так что можно только скрыть переменную в вашей локальной области видимости). Однако эта информация по-прежнему полезна для целей обратной совместимости.

alert(window.hasOwnProperty('undefined')); // alerts "true"
alert(window.undefined); // alerts "undefined"
alert(undefined === window.undefined); // alerts "true"
var undefined = "new value";
alert(undefined); // alerts "new value"
alert(undefined === window.undefined); // alerts "false"

voidс другой стороны, не может быть переоценена. void 0 всегда вернется undefined, undefinedс другой стороны, может быть тем, что г-н Javascript решит, что он этого хочет.

Зачем void 0конкретно?

Почему мы должны использовать void 0? Что такого особенного в 0? Не могли бы мы так же легко использовать 1, или же 42, или же 1000000 или же "Hello, world!"?

И ответ, да, мы могли бы, и это будет работать так же хорошо. Единственное преимущество прохождения в 0 вместо какого-то другого аргумента является то, что 0 коротка и идиоматична.

Почему это все еще актуально?

Хотя undefined Обычно можно доверять в современных средах JavaScript, есть одно тривиальное преимущество void 0: это короче. При написании кода не нужно беспокоиться о разнице, но она может сложиться достаточно над большими базами кода, которые заменяет большинство минификаторов кода undefined с void 0 уменьшить количество байтов, отправляемых в браузер.

void 0 возвращает неопределенное значение и не может быть перезаписано undefined может быть перезаписано

var undefined = "HAHA";

void является зарезервированным ключевым словом JavaScript. Он вычисляет выражение и всегда возвращает undefined,

Другие вопросы по тегам