版本

no-duplicate-case

不允許重複的 case 標籤

建議

設定檔中使用 @eslint/jsrecommended 設定會啟用此規則

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

規則詳細資訊

此規則不允許 switch 陳述式的 case 子句中有重複的測試表達式。

此規則的錯誤程式碼範例

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

var 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"*/

var 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 中引入的。

資源

變更語言