JavaScript `undefined` vs `void 0`

В чем же разница между undefined и void 0?

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

Ответ 1

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

undefined = 1;
console.log(!!undefined); //true
console.log(!!void(0)); //false

Ответ 2

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

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

Ответ 3

JS очень силен в синтаксисе, скобки здесь необязательны, void 0 и void(0) эквивалентны.

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

Дополнительная информация в ссылке: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/void

Ответ 4

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