
default-case-last
强制 switch
语句中的 default
子句位于最后
switch
语句可以选择性地包含 default
子句。
如果存在,它通常是最后一个子句,但这不是必须的。也允许将 default
子句放在所有 case
子句之前,或介于两者之间。其行为与作为最后一个子句时基本相同。只有当 case
子句(包括在 default
之后定义的子句)中没有匹配项时,default
代码块才会被执行,但也可以从 default
子句“fall through”到列表中的下一个子句。然而,这种流程并不常见,并且会使读者感到困惑。
即使没有“fall through”逻辑,在 case
子句之前或之间看到 default
子句仍然是出乎意料的。按照惯例,它应该作为最后一个子句。
如果 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 中引入。
延伸阅读
