JavaScript `undefined` против` void 0` - PullRequest
30 голосов
/ 19 апреля 2011

Какая разница между undefined и void 0?

Что предпочтительнее и почему?

Ответы [ 4 ]

47 голосов
/ 19 апреля 2011

Разница в том, что некоторые браузеры позволяют перезаписывать значение undefined. Однако void(anything) всегда возвращает реальное undefined.

undefined = 1;
console.log(!!undefined); //true
console.log(!!void(0)); //false
18 голосов
/ 18 июня 2013

undefined имеет нормальную семантику переменных, которую даже строгий режим не может исправить , и требует поиска во время выполнения. Это может быть затенено как любая другая переменная, и глобальная переменная по умолчанию undefined не доступна только для чтения в ES3.

void 0 - это пуленепробиваемая константа времени компиляции для undefined без требований поиска. это как запись null или true вместо поиска значения переменной. Это работает из коробки без каких-либо аргументов безопасности и короче, чтобы написать. Это лучше во всех отношениях.

1 голос
/ 19 апреля 2011

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

Для второго вопроса вам нужно использовать undefined напрямую, избегая ненужной оценки операнда для извлечениято же самое значение undefined.

Подробнее в ссылке: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/void

0 голосов
/ 19 апреля 2011

Используйте undefined. Это более известный, чем void(0).

...