Оператор void

Оператор void обчислює наданий вираз та повертає undefined.

Синтаксис

void вираз

Опис

Цей оператор дозволяє обчислення виразів, які повертають значення, у місцях, де очікується вираз, що обчислюється як undefined.

Оператор void часто використовують лише для того, щоб отримати просту величину undefined, зазвичай, використанням "void(0)" (що є еквівалентним "void 0"). У таких випадках можна замість цього скористатись глобальною змінною undefined (за умови, що їй не було присвоєне нове значення).

Зауважте, що необхідно враховувати пріоритет оператора void, і що круглі дужки можуть допомогти прояснити обчислення виразу, розташованого після оператора void:

void 2 == '2';   // (void 2) == '2', вертає false
void (2 == '2'); // void (2 == '2'), вертає undefined

Негайно виконувані функціональні вирази

При використанні негайно виконуваного фукнціонального виразу void може використовуватись, щоб змусити ключове слово function сприйматись як вираз, а не як оголошення.

void function iife() {
    var bar = function () {};
    var baz = function () {};
    var foo = function () {
        bar();
        baz();
     };
    var biz = function () {};

    foo();
    biz();
}();

URI у JavaScript

Коли переглядач переходить по javascript: URI, він обчислює код у URI, після чого замінює вміст сторінки поверненим значенням, якщо тільки повернене значення не є undefined. Оператор void можна використати, щоб повернути undefined. Наприклад:

<a href="javascript:void(0);">
  Натисніть сюди, щоб не робити нічого
</a>

<a href="javascript:void(document.body.style.backgroundColor='green');">
  Натисніть сюди, щоб зробити фон зеленим
</a>

Заувага: використання псевдопротоколу javascript: не заохочується на користь інших альтернатив, таких як ненав'язливі обробники подій.

Стрілкові функції без витоків

Стрілкові функції запроваджують скорочений бездужковий синтаксис, який повертає вираз. Це може спричинити ненавмисні побічні ефекти, повертаючи результат функціонального виклику, який раніше не повертав нічого. Щоб убезпечитись у випадках, коли результат функції не передбачається використовувати, його можна передати у оператор void, щоб гарантувати, що (наприклад) зміна API не спричинить зміну поведінки стрілкових функцій.

button.onclick = () => void doSomething();

Це гарантує, що повернене значення doSomething, змінюючись з undefined на true, не змінить поведінку цього коду.

Специфікації

Специфікація Статус Коментар
ECMAScript (ECMA-262)
The definition of 'The void Operator' in that specification.
Living Standard
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'The void Operator' in that specification.
Standard
ECMAScript 5.1 (ECMA-262)
The definition of 'The void Operator' in that specification.
Standard
ECMAScript 3rd Edition (ECMA-262)
The definition of 'The void Operator' in that specification.
Standard
ECMAScript 1st Edition (ECMA-262)
The definition of 'The void Operator' in that specification.
Standard Початкове визначення. Реалізоване у JavaScript 1.1

Сумісність з веб-переглядачами

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
voidChrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 5Opera Full support 4Safari Full support 3.2WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 10.1Safari iOS Full support 3Samsung Internet Android Full support 1.0nodejs Full support 0.1.100

Legend

Full support  
Full support

Див. також