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();
}
This rule disallows constant expressions in the test condition of:
if, for, while, or do...while statement?: ternary expressionExamples 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);
}
This is a string option having following values:
"all" - Disallow constant expressions in all loops."allExceptWhileTrue" (default) - Disallow constant expressions in all loops except while loops with expression true."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;
}
};
This rule was introduced in ESLint v0.4.1.
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/no-constant-condition