4 ответов:
Разница в том, что некоторые браузеры позволяют перезаписать значение
undefined. Однакоvoid(anything)всегда возвращает вещественное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
Comments