# no-void

禁止 void 运算符

void 运算符接受一个操作数并返回 undefinedvoid expression 将评估 expression 并返回 undefined。它可以用来忽略 expression 可能产生的任何副作用:

使用 void 运算符的常见情况是获取 "pure" 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 0undefined 短:

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"*/

void foo
void someFunction();

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

# 选项

此规则有一个对象选项:

  • allowAsStatement 设置为 true 允许将 void 运算符用作语句(默认 false)。

# allowAsStatement

allowAsStatement 设置为 true 时,规则不会在 void 运算符用作语句的情况下出错,即当它不用于表达式位置时,例如在变量赋值或函数返回中。

{ "allowAsStatement": true } 的错误代码示例:

/*eslint no-void: ["error", { "allowAsStatement": true }]*/

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

{ "allowAsStatement": true } 的正确代码示例:

/*eslint no-void: ["error", { "allowAsStatement": true }]*/

void foo;
void someFunction();

# 何时不使用

如果您有意使用 void 运算符,则可以禁用此规则。

Last Updated: 5/13/2023, 8:55:38 PM