版本

no-duplicate-case

不允許重複的 case 標籤

建議

設定檔中使用來自 @eslint/jsrecommended 設定,啟用此規則

如果 switch 語句在 case 子句中具有重複的測試表達式,則可能是程式設計師複製了 case 子句但忘記更改測試表達式。

規則詳細資訊

此規則不允許在 switch 語句的 case 子句中使用重複的測試表達式。

此規則的錯誤程式碼範例

在遊樂場開啟
/*eslint no-duplicate-case: "error"*/

const a = 1,
    one = 1;

switch (a) {
    case 1:
        break;
    case 2:
        break;
    case 1:         // duplicate test expression
        break;
    default:
        break;
}

switch (a) {
    case one:
        break;
    case 2:
        break;
    case one:         // duplicate test expression
        break;
    default:
        break;
}

switch (a) {
    case "1":
        break;
    case "2":
        break;
    case "1":         // duplicate test expression
        break;
    default:
        break;
}

此規則的正確程式碼範例

在遊樂場開啟
/*eslint no-duplicate-case: "error"*/

const a = 1,
    one = 1;

switch (a) {
    case 1:
        break;
    case 2:
        break;
    case 3:
        break;
    default:
        break;
}

switch (a) {
    case one:
        break;
    case 2:
        break;
    case 3:
        break;
    default:
        break;
}

switch (a) {
    case "1":
        break;
    case "2":
        break;
    case "3":
        break;
    default:
        break;
}

何時不該使用

在極少數情況下,case 子句中相同的測試表達式會產生不同的值,這必然表示表達式正在引起並依賴副作用,您將必須停用此規則。

switch (a) {
    case i++:
        foo();
        break;
    case i++: // eslint-disable-line no-duplicate-case
        bar();
        break;
}

版本

此規則在 ESLint v0.17.0 中引入。

資源

變更語言