space-unary-ops
强制执行一元运算符之前或之后的一致空格
🔧 可修复
此规则报告的一些问题可以通过 --fix
命令行 选项自动修复
一些风格指南要求或禁止在一元运算符之前或之后使用空格。这主要是风格问题,但是,一些 JavaScript 表达式可以不使用空格编写,这使得它们更难阅读和维护。
规则详情
此规则强制执行关于 words
一元运算符之后以及 nonwords
一元运算符之后/之前的空格一致性。
对于 words
运算符,此规则仅在语法上不需要空格时适用。例如,delete obj.foo
需要空格,并且不会被此规则考虑。等效的 delete(obj.foo)
具有可选空格 (delete (obj.foo)
),因此此规则将适用于它。
words
一元运算符的示例
// new
var joe = new Person();
// delete
var obj = {
foo: 'bar'
};
delete obj.foo;
// typeof
typeof {} // object
// void
void 0 // undefined
nonwords
一元运算符的示例
if ([1,2,3].indexOf(1) !== -1) {};
foo = --foo;
bar = bar++;
baz = !foo;
qux = !!baz;
选项
此规则有三个选项
words
- 适用于一元单词运算符,例如:new
、delete
、typeof
、void
、yield
nonwords
- 适用于一元运算符,例如:-
、+
、--
、++
、!
、!!
overrides
- 指定覆盖每个运算符(单词或非单词)的空格使用情况。默认情况下为空,但可用于强制或禁止运算符周围的空格。例如
"space-unary-ops": [
2, {
"words": true,
"nonwords": false,
"overrides": {
"new": false,
"++": true
}
}]
在这种情况下,new
运算符之后将不允许空格,并且 ++
运算符之前/之后将需要空格。
对于默认 {"words": true, "nonwords": false}
选项,不正确代码的示例
在 Playground 中打开
/*eslint space-unary-ops: "error"*/
;
;
;
;
;
;
;
;
在 Playground 中打开
/*eslint space-unary-ops: "error"*/
function *foo() {
}
在 Playground 中打开
/*eslint space-unary-ops: "error"*/
async function foo() {
;
}
对于 {"words": true, "nonwords": false}
选项,正确代码的示例
在 Playground 中打开
/*eslint space-unary-ops: "error"*/
// Word unary operator "typeof" is followed by a whitespace.
typeof !foo;
// Word unary operator "void" is followed by a whitespace.
void {foo:0};
// Word unary operator "new" is followed by a whitespace.
new [foo][0];
// Word unary operator "delete" is followed by a whitespace.
delete (foo.bar);
// Unary operator "++" is not followed by whitespace.
++foo;
// Unary operator "--" is not preceded by whitespace.
foo--;
// Unary operator "-" is not followed by whitespace.
-foo;
// Unary operator "+" is not followed by whitespace.
+"3";
在 Playground 中打开
/*eslint space-unary-ops: "error"*/
function *foo() {
yield (0)
}
在 Playground 中打开
/*eslint space-unary-ops: "error"*/
async function foo() {
await (bar);
}
版本
此规则在 ESLint v0.10.0 中引入。