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 中引入。