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 中引入。