Skip to content

eslint/no-constant-condition Correctness ​

✅ This rule is turned on by default.

What it does ​

Disallow constant expressions in conditions

Why is this bad? ​

A constant expression (for example, a literal) as a test condition might be a typo or development trigger for a specific behavior.

This rule disallows constant expressions in the test condition of:

  • if, for, while, or do...while statement
  • ?: ternary expression

Examples ​

Examples of incorrect code for this rule:

js
if (false) {
  doSomethingUnfinished();
}

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

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

Examples of correct code for this rule:

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

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

Options ​

checkLoops ​

{ type: "all" | "allExceptWhileTrue" | "none" | boolean, default: "allExceptWhileTrue" }

  • "all" or true disallows constant expressions in loops
  • "allExceptWhileTrue" disallows constant expressions in loops except while loops with expression true
  • "none" or false allows constant expressions in loops

How to use ​

To enable this rule in the CLI or using the config file, you can use:

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

References ​

Released under the MIT License.