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.
Примеры некорректного кода для этого правила:
/*eslint no-void: "error"*/
;
var foo = ;
function baz() {
return ;
}
Параметры
Это правило имеет параметр в виде объекта:
-
allowAsStatementустановленное вtrueпозволяет использовать оператор void как оператор (по умолчаниюfalse).
allowAsStatement
Когда allowAsStatement установлено в true, правило не будет выдавать ошибку в случаях, когда оператор void используется как оператор, т.е. когда он не используется в позиции выражения, например, в присваивании переменной или возврате функции.
Примеры некорректного кода для { "allowAsStatement": true }:
/*eslint no-void: ["error", { "allowAsStatement": true }]*/
var 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