Возможный дубликат:
Что означает "javascript: void (0)" означает?
Чтение через исходный код Backbone.js, я увидел это:
validObj[attr] = void 0;
Что такое void 0
? Какова цель его использования здесь?
Возможный дубликат:
Что означает "javascript: void (0)" означает?
Чтение через исходный код Backbone.js, я увидел это:
validObj[attr] = void 0;
Что такое void 0
? Какова цель его использования здесь?
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
: оно короче. Разницы не достаточно, чтобы беспокоиться о написании кода, но он может складываться достаточно над большими кодовыми базами, большинство кода minifiers заменить undefined
на void 0
, чтобы уменьшить количество байт, отправленных в браузер.
void 0
возвращает undefined и не может быть перезаписана, а undefined
может быть перезаписана.
var undefined = "HAHA";
void
- зарезервированное ключевое слово JavaScript. Он оценивает выражение и всегда возвращает undefined
.