选择一个版本将带您到所选版本的ESLint文档。

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} 选项,不正确代码的示例

在 Playground 中打开
/*eslint space-unary-ops: "error"*/

typeof!foo;

void{foo:0};

new[foo][0];

delete(foo.bar);

++ foo;

foo --;

- foo;

+ "3";
在 Playground 中打开
/*eslint space-unary-ops: "error"*/

function *foo() {
    yield(0)
}
在 Playground 中打开
/*eslint space-unary-ops: "error"*/

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

对于 {"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 中引入。

资源

主题切换器

选择一种语言将带您到该语言的 ESLint 网站。