Versions

default-case

Require default cases in switch statements

一些代码惯例要求所有的 switch 语句都有一个 default case,即使默认 case 是空的,例如:

switch (foo) {
    case 1:
        doSomething();
        break;

    case 2:
        doSomething();
        break;

    default:
    // 什么也不做
}

我们的想法是,最好总是明确地说明默认行为应该是什么,这样就可以清楚地知道开发者是否错误地忘记了包括默认行为。

其他的代码惯例允许你跳过 default 的情况,只要有一个注释表明这个省略是有意为之,例如:

switch (foo) {
    case 1:
        doSomething();
        break;

    case 2:
        doSomething();
        break;

    // no default
}

再一次,这里的意图是表明开发者打算不存在默认行为。

规则细节

这条规则的目的是要求在 switch 语句中使用 default 大小写。如果没有 default 的情况,可以选择在最后一个 case 后加上 // no default。注释可以是任何想要的大小写,例如 // No Default

使用此规则的错误示例:

Open in Playground
/*eslint default-case: "error"*/

switch (a) {
    case 1:
        /* code */
        break;
}

使用此规则的正确示例:

Open in Playground
/*eslint default-case: "error"*/

switch (a) {
    case 1:
        /* 代码 */
        break;

    default:
        /* 代码 */
        break;
}

switch (a) {
    case 1:
        /* 代码 */
        break;

    // no default
}

switch (a) {
    case 1:
        /* 代码 */
        break;

    // No Default
}

选项

这个规则接受一个选项参数:

  • commentPattern 选项设置为一个正则表达式字符串,以改变默认的 /^no default$/i 注释测试模式

commentPattern

使用 { "commentPattern": "^skip\\sdefault" } 选项的正确示例:

Open in Playground
/*eslint default-case: ["error", { "commentPattern": "^skip\\sdefault" }]*/

switch(a) {
    case 1:
        /* code */
        break;

    // 跳过 default
}

switch(a) {
    case 1:
        /* code */
        break;

    // 跳过 default case
}

何时不用

如果不想控制 switch 语句中的 default 执行情况,你可以安全地禁用这个规则。

Version

This rule was introduced in ESLint v0.6.0.

Resources

更改语言