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