
default-case-last
強制 switch
語句中的 default
子句必須是最後一個
switch
語句可以選擇性地包含 default
子句。
如果存在,通常是最後一個子句,但並非必須如此。也允許將 default
子句放在所有 case
子句之前,或介於兩者之間。行為大致上與它是最後一個子句相同。只有在 case
子句中沒有匹配項(包括在 default
之後定義的子句)時,才會執行 default
區塊,但也可以從 default
子句「fall through」到列表中的下一個子句。然而,這種流程並不常見,並且可能會讓讀者感到困惑。
即使沒有「fall through」邏輯,看到 default
子句在 case
子句之前或之間仍然是出乎意料的。按照慣例,它應該是最後一個子句。
如果 switch
語句應該包含 default
子句,則將其定義為最後一個子句被認為是一種最佳實務。
規則詳細資訊
此規則強制 switch
語句中的 default
子句必須是最後一個。
它僅適用於已經包含 default
子句的 switch
語句。
此規則不強制要求 default
子句的存在。如果您也想強制要求 switch
語句中 default
子句的存在,請參閱 default-case。
此規則的錯誤程式碼範例
在 Playground 中開啟
/*eslint default-case-last: "error"*/
switch (foo) {
case "a":
baz();
break;
}
switch (foo) {
case 1:
bar();
break;
case 2:
quux();
break;
}
switch (foo) {
case "x":
bar();
break;
case "y":
baz();
break;
}
switch (foo) {
case -1:
bar();
break;
}
switch (foo) {
case 0:
doSomethingAnyway();
}
此規則的正確程式碼範例
在 Playground 中開啟
/*eslint default-case-last: "error"*/
switch (foo) {
case "a":
baz();
break;
default:
bar();
break;
}
switch (foo) {
case 1:
bar();
break;
case 2:
quux();
break;
default:
baz();
break;
}
switch (foo) {
case "x":
bar();
break;
case "y":
default:
baz();
break;
}
switch (foo) {
case -1:
bar();
break;
}
if (foo !== 0) {
doSomethingIfNotZero();
}
doSomethingAnyway();
相關規則
版本
此規則在 ESLint v7.0.0-alpha.0 中引入。
延伸閱讀
