disallow constant expressions in conditions (no-constant-condition)
The "extends": "eslint:recommended"
property in a configuration file enables this rule.
A constant expression (for example, a literal) as a test condition might be a typo or development trigger for a specific behavior. For example, the following code looks as if it is not ready for production.
if (false) { doSomethingUnfinished(); }
Rule Details
This rule disallows constant expressions in the test condition of:
-
if
,for
,while
, ordo...while
statement -
?:
ternary expression
Examples of incorrect code for this rule:
/*eslint no-constant-condition: "error"*/ if (false) { doSomethingUnfinished(); } if (void x) { doSomethingUnfinished(); } if (x &&= false) { doSomethingNever(); } if (x ||= true) { doSomethingAlways(); } for (;-2;) { doSomethingForever(); } while (typeof x) { doSomethingForever(); } do { doSomethingForever(); } while (x = -1); var result = 0 ? a : b;
Examples of correct code for this rule:
/*eslint no-constant-condition: "error"*/ if (x === 0) { doSomething(); } for (;;) { doSomethingForever(); } while (typeof x === "undefined") { doSomething(); } do { doSomething(); } while (x); var result = x !== 0 ? a : b;
Options
checkLoops
Set to true
by default. Setting this option to false
allows constant expressions in loops.
Examples of correct code for when checkLoops
is false
:
/*eslint no-constant-condition: ["error", { "checkLoops": false }]*/ while (true) { doSomething(); if (condition()) { break; } }; for (;true;) { doSomething(); if (condition()) { break; } }; do { doSomething(); if (condition()) { break; } } while (true)
Version
This rule was introduced in ESLint 0.4.1.
Resources
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/rules/no-constant-condition