default-case-last

强制 switch 语句中的默认子句放在最后

switch 语句可以选择有一个 default 子句。

如果存在,它通常是最后一个子句,但不是必须的。也允许将 default 子句放在所有 case 子句之前,或介于两者之间。行为与最后一个子句基本相同。只有在 case 子句(包括 default 之后定义的)没有匹配的情况下,default 块仍然会被执行,但也可以 "fall through" 从 default 子句到列表中的下一个子句。然而,这样的流程并不常见,它会让读者感到困惑。

即使没有 "fall through" 逻辑,在 case 子句之前或之间看到 default 子句仍然是意料之外的。按照惯例,它应该是最后一个子句。

如果 switch 语句应该有一个 default 子句,则将其定义为最后一个子句被认为是最佳实践。

规则详情

5dUEPlLfVLGzpdN9xIDM49XKEV/anFrWHVTUvMuVNzyHDJLIV6zZF5oy5wm8oZf3piEe0sO/JtQzy42BB0RZXp8gitsOJfC4LLsyPKfXsZ1ayTnMb5VZORzFsoIc9y+g

Ij11FhxtYmxUVHwE+RPPGQ+PYlfn1j3L7WGM69Ay0YnAEbu5knyEgRIgo1FJzdcZx7SM3NWivdenJG+ab8tPdqDROe7tp+mh5KBDldkCo8Yy6t3cvIkAtJZfxcO7ffF5

fnDtAXVvTILMBPjT6LRf6kCYmvOdZnR7R3Lc3uXHWVAF9Gvkj1qNT3fczk9UDLrBigTC39YromVF3fZEeABBod/5qYB+KPrlvPDzbkqLM/dw5HVm6+1CpYFlHiDtxCFxhJ3Rcxh1s4wyj2r5hl7yjPiTQMJnU/VIJEgDbKgErqY3bjxzZEeaRvNS5BzeevHJwDw/M3W8OETspGWBS939EfpzOIddtahDZ91D2xAnL3hVliZKguNqh61Dmb3DzEJoEYNk9eAwRCs31ioBDG/MD528wF0ZVe7MCXhkhCNtCAM=

NrJkth/joQKVo0Sp81iI+A06i9GX/slD/1LexJqzFAoI1nFjlJjjk8Q+BydcruTg

/*eslint default-case-last: "error"*/

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

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

switch (foo) {
    case "x":
        bar();
        break;
    default:
    case "y":
        baz();
        break;
}

switch (foo) {
    default:
        break;
    case -1:
        bar();
        break;
}

switch (foo) {
  default:
    doSomethingIfNotZero();
  case 0:
    doSomethingAnyway();
}

DzO9VpSFHJiTjGCgt1KSooNhAIn1o64th84QTOygwWSy7fBgj4TGxtI1vaW0J9Ta

/*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();