首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

curly

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

当一个块只包含一条语句时,JavaScript 允许省略花括号。然而,很多人认为最好的做法是不要忽略块周围的花括号,即使它们是可选的,因为它可能导致错误并降低代码清晰度。所以如下:

代码语言:javascript
复制
if (foo) foo++;

可以改写为:

代码语言:javascript
复制
if (foo) {
    foo++;
}

然而,有些人更喜欢只有在执行多个语句时才使用大括号。

规则细节

此规则旨在通过确保将块语句包装在花括号中来防止错误并提高代码清晰度。当它遇到忽略大括号的块时它会发出警告。

选项

all

不正确的代码为默认"all"选项的示例:

代码语言:javascript
复制
/*eslint curly: "error"*/

if (foo) foo++;

while (bar)
    baz();

if (foo) {
    baz();
} else qux();

默认选项的正确代码示例"all"

代码语言:javascript
复制
/*eslint curly: "error"*/

if (foo) {
    foo++;
}

while (bar) {
    baz();
}

if (foo) {
    baz();
} else {
    qux();
}

multi

默认情况下,该规则时警告说ifelseforwhile,或do无遮挡陈述他们的身体被使用。但是,可以指定块语句只应在块中有多个语句时使用,并警告块中只有一个语句。

选项的错误代码示例"multi"

代码语言:javascript
复制
/*eslint curly: ["error", "multi"]*/

if (foo) {
    foo++;
}

if (foo) bar();
else {
    foo++;
}

while (true) {
    doSomething();
}

for (var i=0; i < items.length; i++) {
    doSomething();
}

选项的正确代码示例"multi"

代码语言:javascript
复制
/*eslint curly: ["error", "multi"]*/

if (foo) foo++;

else foo();

while (true) {
    doSomething();
    doSomethingElse();
}

multi-line

或者,你可以放松的规则,以允许支柱少单行ifelse ifelseforwhile,或do,同时还规定使用其他实例花括号。

选项的错误代码示例"multi-line"

代码语言:javascript
复制
/*eslint curly: ["error", "multi-line"]*/

if (foo)
  doSomething();
else
  doSomethingElse();

if (foo) foo(
  bar,
  baz);

选项的正确代码示例"multi-line"

代码语言:javascript
复制
/*eslint curly: ["error", "multi-line"]*/

if (foo) foo++; else doSomething();

if (foo) foo++;
else if (bar) baz()
else doSomething();

do something();
while (foo);

while (foo
  && bar) baz();

if (foo) {
    foo++;
}

if (foo) { foo++; }

while (true) {
    doSomething();
    doSomethingElse();
}

multi-or-nest

您可以使用强制括号少另一种配置ifelse ifelseforwhile,或者do如果他们的身体只包含一个单行的语句。在所有其他情况下强制支撑。

选项的错误代码示例"multi-or-nest"

代码语言:javascript
复制
/*eslint curly: ["error", "multi-or-nest"]*/

if (!foo)
    foo = {
        bar: baz,
        qux: foo
    };

while (true)
  if(foo)
      doSomething();
  else
      doSomethingElse();

if (foo) {
    foo++;
}

while (true) {
    doSomething();
}

for (var i = 0; foo; i++) {
    doSomething();
}

if (foo)
    // some comment
    bar();

选项的正确代码示例"multi-or-nest"

代码语言:javascript
复制
/*eslint curly: ["error", "multi-or-nest"]*/

if (!foo) {
    foo = {
        bar: baz,
        qux: foo
    };
}

while (true) {
  if(foo)
      doSomething();
  else
      doSomethingElse();
}

if (foo)
    foo++;

while (true)
    doSomething();

for (var i = 0; foo; i++)
    doSomething();

if (foo) {
    // some comment
    bar();
}

consistent

当使用任何multi*选项时,您可以添加一个选项来强制执行 ifelse ifelse 链的所有主体,使其带有或不带大括号。

不正确"multi", "consistent"选项代码示例:

代码语言:javascript
复制
/*eslint curly: ["error", "multi", "consistent"]*/

if (foo) {
    bar();
    baz();
} else
    buz();

if (foo)
    bar();
else if (faa)
    bor();
else {
    other();
    things();
}

if (true)
    foo();
else {
    baz();
}

if (foo) {
    foo++;
}

选项的正确代码示例"multi", "consistent"

代码语言:javascript
复制
/*eslint curly: ["error", "multi", "consistent"]*/

if (foo) {
    bar();
    baz();
} else {
    buz();
}

if (foo) {
    bar();
} else if (faa) {
    bor();
} else {
    other();
    things();
}

if (true)
    foo();
else
    baz();

if (foo)
    foo++;

何时不使用它

如果您没有关于何时使用块语句以及何时不使用的严格约定,则可以安全地禁用此规则。

版本

这条规则是在 ESLint 0.0.2 中引入的。

资源

扫码关注腾讯云开发者

领取腾讯云代金券