跳至內容

eslint/default-case-last 樣式

功能說明

強制 switch 語句中的 default 子句必須放在最後

為什麼這是不好的做法?

switch 語句可以選擇性地包含一個 default 子句。如果存在,通常會是最後一個子句,但這不是必須的。也允許將 default 子句放在所有 case 子句之前,或介於它們之間。它的行為大多與最後一個子句相同。只有在 case 子句中沒有匹配項時(包括在 default 之後定義的 case),才會執行 default 區塊,但也可以從 default 子句“落入”列表中的下一個子句。然而,這種流程並不常見,會讓讀者感到困惑。即使沒有“落入”的邏輯,在 case 子句之前或之間看到 default 子句仍然是出乎意料的。按照慣例,預期它是最後一個子句。如果 switch 語句應該有一個 default 子句,則將其定義為最後一個子句被認為是最佳實踐。

範例

javascript
switch (foo) {
  default:
    bar();
    break;
  case "a":
    baz();
    break;
}

switch (foo) {
  case 1:
    bar();
    break;
  default:
    baz();
    break;
  case 2:
    qux();
    break;
}

參考資料

依 MIT 授權發布。