default-case-last
强制 switch 语句中的 default 子句位于最后
switch
语句可以选择性地包含一个 default
子句。
如果存在,它通常是最后一个子句,但它不需要是。也可以将 default
子句放在所有 case
子句之前,或放在两者之间。其行为与它是最后一个子句时基本相同。只有当 case
子句(包括在 default
之后定义的子句)中没有匹配项时,才会执行 default
块,但也可以从 default
子句“贯穿”到列表中的下一个子句。但是,这种流程并不常见,并且会让读者感到困惑。
即使没有“贯穿”逻辑,在 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 中引入的。