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 как выражения, а не как объявления:

var 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();

var 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 }]*/

var 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
O’Reilly Media - Обучение технологиям и бизнесу

Источники

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

© 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