Что такое void 0 в JavaScript?

«Что такое void 0 в JavaScript?» — вопрос из категории JavaScript, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

void 0 — это выражение в JavaScript, которое всегда вычисляется в undefined. Оператор void вычисляет переданное ему выражение и затем возвращает undefined.

Как это работает:

console.log(void 0); // undefined
console.log(void(1 + 1)); // undefined
console.log(void "hello"); // undefined

Исторический контекст и использование:

  1. Гарантированный undefined: В ранних версиях JS (ES3) глобальная переменная undefined была перезаписываемой (undefined = 123;). void 0 всегда возвращал истинное undefined, что использовалось для надежности в библиотеках.
  2. Минимизация кода: В миньфицированном коде void 0 короче, чем undefined.
  3. Отмена поведения по умолчанию: Чаще всего void используется в атрибуте href для отмены перехода по ссылке:
    <a href="javascript:void(0);" onclick="myFunction()">Click me</a>

    Выражение javascript:void(0) возвращает undefined, что предотвращает переход по ссылке.

Современная практика (ES5+): В современных стандартах (начиная с ES5) глобальное свойство undefined является ненастраиваемым и доступным только для чтения, поэтому использование void 0 для получения undefined потеряло актуальность.

// Современный код
let value = undefined; // Безопасно
console.log(undefined); // Безопасно

// Для отмены поведения в ссылках сейчас предпочитают другие методы:
<a href="#" onclick="myFunction(); return false;">Click</a>
// Или, что лучше, использовать event.preventDefault() в обработчике.

Вывод: void 0 — это архаизм, знание о котором важно для чтения старого кода или минифицированных библиотек. В новом коде следует использовать undefined напрямую, а для управления поведением событий — современные методы JavaScript.