版本

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 - 適用於單元單詞運算符,例如: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"*/

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"*/

function *foo() {
    yield (0)
}
在遊樂場中開啟
/*eslint space-unary-ops: "error"*/

async function foo() {
    await (bar);
}

版本

此規則是在 ESLint v0.10.0 中引入的。

資源

變更語言