no-constant-condition
Disallow constant expressions in conditions
Using the recommended config from @eslint/js 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...whilestatement?:ternary expression
Examples of incorrect code for this rule:
/*eslint no-constant-condition: "error"*/
if () {
doSomethingUnfinished();
}
if () {
doSomethingUnfinished();
}
if () {
doSomethingNever();
}
if () {
doSomethingAlways();
}
if () {
doSomethingAlways();
}
if () {
doSomethingAlways();
}
if () {
doSomethingUnfinished();
}
if () {
doSomethingAlways();
}
for (;;) {
doSomethingForever();
}
while () {
doSomethingForever();
}
do {
doSomethingForever();
} while ();
const result = ? a : b;
if(){
output(input);
}
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);
const result = x !== 0 ? a : b;
if(input === "hello" || input === "bye"){
output(input);
}
Options
checkLoops
This is a string option having following values:
"all"- Disallow constant expressions in all loops."allExceptWhileTrue"(default) - Disallow constant expressions in all loops exceptwhileloops with expressiontrue."none"- Allow constant expressions in loops.
Or instead you can set the checkLoops value to booleans where true is same as "all" and false is same as "none".
Examples of incorrect code for when checkLoops is "all" or true:
/*eslint no-constant-condition: ["error", { "checkLoops": "all" }]*/
while () {
doSomething();
};
for (;;) {
doSomething();
};
/*eslint no-constant-condition: ["error", { "checkLoops": true }]*/
while () {
doSomething();
};
do {
doSomething();
} while ()
Examples of correct code for when checkLoops is "all" or true:
/*eslint no-constant-condition: ["error", { "checkLoops": "all" }]*/
while (a === b) {
doSomething();
};
/*eslint no-constant-condition: ["error", { "checkLoops": true }]*/
for (let x = 0; x <= 10; x++) {
doSomething();
};
Example of correct code for when checkLoops is "allExceptWhileTrue":
/*eslint no-constant-condition: "error"*/
while (true) {
doSomething();
};
Examples of correct code for when checkLoops is "none" or false:
/*eslint no-constant-condition: ["error", { "checkLoops": "none" }]*/
while (true) {
doSomething();
if (condition()) {
break;
}
};
do {
doSomething();
if (condition()) {
break;
}
} while (true)
/*eslint no-constant-condition: ["error", { "checkLoops": false }]*/
while (true) {
doSomething();
if (condition()) {
break;
}
};
for (;true;) {
doSomething();
if (condition()) {
break;
}
};
Related Rules
Version
This rule was introduced in ESLint v0.4.1.