Ответ 1
Разница в том, что некоторые браузеры позволяют вам перезаписать значение undefined
. Однако void(anything)
всегда возвращает real undefined
.
undefined = 1;
console.log(!!undefined); //true
console.log(!!void(0)); //false
В чем же разница между undefined
и void 0
?
Что предпочтительнее и почему?
Разница в том, что некоторые браузеры позволяют вам перезаписать значение undefined
. Однако void(anything)
всегда возвращает real undefined
.
undefined = 1;
console.log(!!undefined); //true
console.log(!!void(0)); //false
undefined
имеет нормальную семантику переменных, которую не может исправить даже строгий режим и требует поиска во время выполнения. Он может быть затенен
как и любая другая переменная, а глобальная переменная по умолчанию undefined
не доступна только для чтения в ES3.
void 0
- эффективная константа пуленепробиваемого времени компиляции для undefined
без требований поиска. это
например, писать null
или true
вместо поиска значения переменной. Он работает из коробки без каких-либо аргументов в области безопасности и короче писать. Это лучше во всех отношениях.
JS очень силен в синтаксисе, скобки здесь необязательны, void 0
и void(0)
эквивалентны.
Во втором вопросе вам нужно использовать undefined
напрямую, избегая ненулевой оценки операнда, чтобы получить одно и то же значение undefined
.
Дополнительная информация в ссылке: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/void
Используйте undefined
. Его более известный, чем void(0)
.