curly
在--fix
命令行上的选项可以自动修复一些被这条规则反映的问题。
当一个块只包含一条语句时,JavaScript 允许省略花括号。然而,很多人认为最好的做法是不要忽略块周围的花括号,即使它们是可选的,因为它可能导致错误并降低代码清晰度。所以如下:
if (foo) foo++;
可以改写为:
if (foo) {
foo++;
}
然而,有些人更喜欢只有在执行多个语句时才使用大括号。
规则细节
此规则旨在通过确保将块语句包装在花括号中来防止错误并提高代码清晰度。当它遇到忽略大括号的块时它会发出警告。
选项
all
不正确的代码为默认"all"
选项的示例:
/*eslint curly: "error"*/
if (foo) foo++;
while (bar)
baz();
if (foo) {
baz();
} else qux();
默认选项的正确代码示例"all"
:
/*eslint curly: "error"*/
if (foo) {
foo++;
}
while (bar) {
baz();
}
if (foo) {
baz();
} else {
qux();
}
multi
默认情况下,该规则时警告说if
,else
,for
,while
,或do
无遮挡陈述他们的身体被使用。但是,可以指定块语句只应在块中有多个语句时使用,并警告块中只有一个语句。
选项的错误代码示例"multi"
:
/*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"
:
/*eslint curly: ["error", "multi"]*/
if (foo) foo++;
else foo();
while (true) {
doSomething();
doSomethingElse();
}
multi-line
或者,你可以放松的规则,以允许支柱少单行if
,else if
,else
,for
,while
,或do
,同时还规定使用其他实例花括号。
选项的错误代码示例"multi-line"
:
/*eslint curly: ["error", "multi-line"]*/
if (foo)
doSomething();
else
doSomethingElse();
if (foo) foo(
bar,
baz);
选项的正确代码示例"multi-line"
:
/*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
您可以使用强制括号少另一种配置if
,else if
,else
,for
,while
,或者do
如果他们的身体只包含一个单行的语句。在所有其他情况下强制支撑。
选项的错误代码示例"multi-or-nest"
:
/*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"
:
/*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*
选项时,您可以添加一个选项来强制执行 if
,else if
和 else
链的所有主体,使其带有或不带大括号。
不正确的"multi", "consistent"
选项代码示例:
/*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"
:
/*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 中引入的。
资源
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com