no-void
禁止使用 `void` 运算符
`void` 运算符接受一个操作数并返回 `undefined`:`void 表达式` 将评估 `表达式` 并返回 `undefined`。它可以用于忽略 `表达式` 可能产生的任何副作用。
使用 `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 中引入。