curly
强制所有控制语句使用一致的大括号风格
此规则报告的一些问题可以通过 --fix
命令行 选项自动修复
JavaScript 允许在代码块仅包含一条语句时省略大括号。但是,许多人认为永远不要省略代码块周围的大括号,即使它们是可选的,也是最佳实践,因为这可能导致错误并降低代码清晰度。所以以下代码
if (foo) foo++;
可以重写为
if (foo) {
foo++;
}
然而,有些人更喜欢仅在要执行多条语句时才使用大括号。
规则详情
此规则旨在通过确保代码块语句用大括号括起来来防止错误并提高代码清晰度。当它遇到省略大括号的代码块时,会发出警告。
选项
all
默认 "all"
选项的错误代码示例
/*eslint curly: "error"*/
if (foo)
while (bar)
if (foo) {
baz();
} else
默认 "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)
if (foo) bar();
else
while (true)
for (var i=0; i < items.length; i++)
"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)
else
if (foo)
"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)
while (true)
if (foo)
while (true)
for (var i = 0; foo; i++)
"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();
对于以注释开头的单行语句,允许但不强制使用大括号。
"multi-or-nest"
选项的其他正确代码示例
/*eslint curly: ["error", "multi-or-nest"]*/
if (foo)
// some comment
bar();
if (foo) {
// some comment
bar();
}
consistent
当使用任何 multi*
选项时,您可以添加一个选项来强制 if
、else if
和 else
链的所有主体都使用或不使用大括号。
"multi"
、"consistent"
选项的错误代码示例
/*eslint curly: ["error", "multi", "consistent"]*/
if (foo) {
bar();
baz();
} else
if (foo)
else if (faa)
else {
other();
things();
}
if (true)
foo();
else
if (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 v0.0.2 中引入。