Spec-Zone.ru › ESLint

no-void

Запретить операторы void

❄️ Заморожено

В настоящее время это правило заморожено, и запросы на добавление функций не принимаются.

Оператор void принимает операнд и возвращает undefined: void expression вычислит expression и вернёт undefined. Его можно использовать, чтобы игнорировать любые побочные эффекты, которые может вызвать expression:

Часто оператор void используют, чтобы получить «чистое» значение undefined, поскольку до ES5 переменная undefined была изменяемой:

// will always return undefined
(function(){
    return void 0;
})();

// will return 1 in ES3 and undefined in ES5+
(function(){
    undefined = 1;
    return undefined;
})();

// will throw TypeError in ES5+
(function(){
    'use strict';
    undefined = 1;
})();

Ещё один распространённый случай — минификация кода, поскольку void 0 короче, чем undefined:

foo = void 0;
foo = undefined;

При использовании с IIFE (немедленно вызываемым функциональным выражением) void позволяет заставить интерпретатор воспринимать ключевое слово function как выражение, а не как объявление:

let foo = 1;
void function(){ foo = 1; }() // will assign foo a value of 1
+function(){ foo = 1; }() // same as above
function(){ foo = 1; }() // will throw SyntaxError

Некоторые стили написания кода запрещают оператор void, считая его использование неочевидным и затрудняющим чтение.

Подробное описание правила

Это правило призвано исключить использование оператора void.

Примеры неправильного кода для этого правила:

Открыть в Playground
/*eslint no-void: "error"*/

void foo
void someFunction();

const foo = void bar();
function baz() {
    return void 0;
}

Параметры

Это правило принимает объект параметров:

  • allowAsStatement со значением true позволяет использовать оператор void в качестве инструкции (по умолчанию — false).

allowAsStatement

Если для allowAsStatement задано значение true, правило не будет выдавать ошибку в случаях, когда оператор void используется как инструкция, то есть не используется в выражении, например при присваивании переменной или возврате значения из функции.

Примеры неправильного кода для { "allowAsStatement": true }:

Открыть в Playground
/*eslint no-void: ["error", { "allowAsStatement": true }]*/

const foo = void bar();
function baz() {
    return void 0;
}

Примеры правильного кода для { "allowAsStatement": true }:

Открыть в Playground
/*eslint no-void: ["error", { "allowAsStatement": true }]*/

void foo;
void someFunction();

Когда не следует использовать это правило

Если вы намеренно используете оператор void, это правило можно отключить.

Связанные правила

  • no-undef-init
  • no-undefined

Версия

Это правило появилось в ESLint v0.8.0.

Дополнительные материалы

Оператор void — JavaScript | MDN
developer.mozilla.org
O’Reilly Media — обучение технологиям и бизнесу
oreilly.com

Ресурсы

  • Исходный код правила
  • Исходный код тестов

© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/no-void

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API