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.
Примеры неправильного кода для этого правила:
/*eslint no-void: "error"*/
;
const foo = ;
function baz() {
return ;
}
Параметры
Это правило принимает объект параметров:
-
allowAsStatementсо значениемtrueпозволяет использовать операторvoidв качестве инструкции (по умолчанию —false).
allowAsStatement
Если для allowAsStatement задано значение true, правило не будет выдавать ошибку в случаях, когда оператор void используется как инструкция, то есть не используется в выражении, например при присваивании переменной или возврате значения из функции.
Примеры неправильного кода для { "allowAsStatement": true }:
/*eslint no-void: ["error", { "allowAsStatement": true }]*/
const foo = ;
function baz() {
return ;
}
Примеры правильного кода для { "allowAsStatement": true }:
/*eslint no-void: ["error", { "allowAsStatement": true }]*/
void foo;
void someFunction();
Когда не следует использовать это правило
Если вы намеренно используете оператор void, это правило можно отключить.
Связанные правила
Версия
Это правило появилось в ESLint v0.8.0.
Дополнительные материалы
Ресурсы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/no-void