Skip to content
← Back to rules

eslint/no-constant-condition 正しさ

This rule is turned on by default.

何をするか

条件式に定数式を使用しないように制限します

なぜ悪いのか

定数式(例:リテラル)をテスト条件として使用することは、タイプミスや特定の動作用の開発用トリガーである可能性があります。

このルールは、以下の構文におけるテスト条件で定数式の使用を禁止します:

  • ifforwhile、または do...while
  • ?: 三項演算子

このルールに対する誤りの例:

js
if (false) {
  doSomethingUnfinished();
}

if (new Boolean(x)) {
  doSomethingAlways();
}
if ((x ||= true)) {
  doSomethingAlways();
}

do {
  doSomethingForever();
} while ((x = -1));

このルールに対する正しい例:

js
if (x === 0) {
  doSomething();
}

while (typeof x === "undefined") {
  doSomething();
}

設定

このルールは、以下のプロパティを持つ設定オブジェクトを受け入れます。

checkLoops

type: "all" | "allExceptWhileTrue" | "none"

default: "allExceptWhileTrue"

ループ内の定数条件のチェックを行うかどうかを指定する設定オプション。

  • "all" または true:ループ内での定数式の使用を禁止
  • "allExceptWhileTrue"true という式を持つ while ループを除き、ループ内での定数式の使用を禁止
  • "none" または false:ループ内での定数式の使用を許可

使用方法

このルールを有効化するには、設定ファイルまたは CLI で次のように使用できます:

json
{
  "rules": {
    "no-constant-condition": "error"
  }
}
bash
oxlint --deny no-constant-condition

参照