
default-case-last
強制 switch 語句中的 default 子句位於最後
switch
語句可以選擇性地具有 default
子句。
如果存在,它通常是最後一個子句,但它不一定要是。 也允許將 default
子句放在所有 case
子句之前,或在它們之間的任何位置。 其行為與它是最後一個子句時大致相同。 default
區塊仍然只會在 case
子句(包括在 default
之後定義的子句)中沒有匹配時執行,但是也可以從 default
子句「落入」列表中的下一個子句。 然而,這種流程並不常見,並且會讓讀者感到困惑。
即使沒有「落入」邏輯,在 case
子句之前或之間看到 default
子句仍然是出乎意料的。 按照慣例,預期它是最後一個子句。
如果 switch
語句應該有 default
子句,則將其定義為最後一個子句被認為是最佳實踐。
規則詳情
此規則強制 switch
語句中的 default
子句位於最後。
它僅適用於已經具有 default
子句的 switch
語句。
此規則不強制 default
子句的存在。 如果您也想強制 switch
語句中存在 default
子句,請參閱 default-case。
此規則的錯誤程式碼範例
在遊樂場中開啟
/*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();
}
此規則的正確程式碼範例
在遊樂場中開啟
/*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 中引入。
延伸閱讀
