space-unary-ops
強制在單元運算符之前或之後使用一致的間距
🔧 可修復
此規則報告的某些問題可由 --fix
命令列 選項自動修復
此規則已在 ESLint v8.53.0 中棄用。請使用 @stylistic/eslint-plugin-js
中對應的規則。
某些風格指南要求或禁止在單元運算符之前或之後使用空格。這主要是風格問題,但是,某些 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}
選項的此規則,不正確的程式碼範例
在遊樂場中開啟
/*eslint space-unary-ops: "error"*/
;
;
;
;
;
;
;
;
在遊樂場中開啟
/*eslint space-unary-ops: "error"*/
function *foo() {
}
在遊樂場中開啟
/*eslint space-unary-ops: "error"*/
async function foo() {
;
}
對於具有 {"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"*/
function *foo() {
yield (0)
}
在遊樂場中開啟
/*eslint space-unary-ops: "error"*/
async function foo() {
await (bar);
}
版本
此規則是在 ESLint v0.10.0 中引入的。