curly
要求遵循以下约束( 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 中引入的。