# 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、yieldnonwords- 适用于一元运算符,例如:-、+、--、++、!、!!overrides- 为每个运算符、单词或非单词指定覆盖间距的使用。默认情况下为空,但可用于强制或禁止运算符周围的间距。例如:
"space-unary-ops": [
2, {
"words": true,
"nonwords": false,
"overrides": {
"new": false,
"++": true
}
}]
在这种情况下,在 new 运算符之后不允许使用空格,而在 ++ 运算符之前/之后需要空格。
此规则使用默认 {"words": true, "nonwords": false} 选项的错误代码示例:
/*eslint space-unary-ops: "error"*/
typeof!foo;
void{foo:0};
new[foo][0];
delete(foo.bar);
++ foo;
foo --;
- foo;
+ "3";
/*eslint space-unary-ops: "error"*/
/*eslint-env es6*/
function *foo() {
yield(0)
}
/*eslint space-unary-ops: "error"*/
async function foo() {
await(bar);
}
此规则使用 {"words": true, "nonwords": false} 选项的正确代码示例:
/*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";
/*eslint space-unary-ops: "error"*/
/*eslint-env es6*/
function *foo() {
yield (0)
}
/*eslint space-unary-ops: "error"*/
async function foo() {
await (bar);
}