Eslint
规则 | Rules

space-unary-ops

在一元运算符(空间一元运算符)之前/之后需要或不允许空格

--fix命令行上的选项可以自动修复一些被这条规则反映的问题。

一些风格指南在一元运算符之前或之后需要或不允许空格。这主要是一个风格问题,但是,一些JavaScript表达式可以无间断地写入,这使得它更难以阅读和维护。

规则细节

该规则强化了words一元运算符之后和一元运算符之后的空间的一致性nonwords

一元运算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-适用于一元字运营商,如:newdeletetypeofvoidyield

  • nonwords-适用于一元运算符,如:-+--++!!!

  • 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) }

此规则的正确代码示例包含以下{"words": true, "nonwords": false}选项:

/*eslint space-unary-ops: "error"*/ // Word unary operator "delete" is followed by a whitespace. delete foo.bar; // Word unary operator "new" is followed by a whitespace. new Foo; // Word unary operator "void" is followed by a whitespace. void 0; // 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 0.10.0中引入。

资源