Skip to content
← Back to rules

eslint/no-dupe-else-if 正确性

This rule is turned on by default.

它的作用

禁止在 if-else-if 链中出现重复的条件

为什么这是不好的?

if-else-if 链常用于需要根据某些条件仅执行一个分支(或最多一个分支)的情形。在同一链中出现两个相同的测试条件几乎总是代码中的错误。除非表达式中存在副作用,否则重复的条件将与链中较早的相同表达式得出相同的真或假值,这意味着其分支永远无法执行。

示例

此规则的错误代码示例:

javascript
if (a) {
  foo();
} else if (b) {
  bar();
} else if (b) {
  baz();
}
javascript
if (a || b) {
  foo();
} else if (a) {
  bar();
}
javascript
if (n === 1) {
  foo();
} else if (n === 2) {
  bar();
} else if (n === 3) {
  baz();
} else if (n === 2) {
  quux();
} else if (n === 5) {
  quuux();
}

此规则的正确代码示例:

javascript
if (a) {
  foo();
} else if (b) {
  bar();
} else if (c) {
  baz();
}
javascript
if (a || b) {
  foo();
} else if (c) {
  bar();
}
javascript
if (n === 1) {
  foo();
} else if (n === 2) {
  bar();
} else if (n === 3) {
  baz();
} else if (n === 4) {
  quux();
} else if (n === 5) {
  quuux();
}

如何使用

要通过配置文件或 CLI 启用此规则,可以使用:

json
{
  "rules": {
    "no-dupe-else-if": "error"
  }
}
bash
oxlint --deny no-dupe-else-if

参考资料