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

参照