no-constant-condition
禁止在条件中使用常量表达式
✅ 推荐
在配置文件中使用来自@eslint/js
的recommended
配置将启用此规则。
作为测试条件的常量表达式(例如,字面量)可能是输入错误或特定行为的开发触发器。例如,以下代码看起来似乎尚未准备好投入生产。
if (false) {
doSomethingUnfinished();
}
规则详情
此规则禁止在以下语句的测试条件中使用常量表达式:
if
、for
、while
或do...while
语句?:
三元表达式
此规则的错误代码示例
在 Playground 中打开
/*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 ();
var result = ? a : b;
if(){
output(input);
}
此规则的正确代码示例
在 Playground 中打开
/*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;
if(input === "hello" || input === "bye"){
output(input);
}
选项
checkLoops
这是一个字符串选项,具有以下值:
"all"
- 禁止在所有循环中使用常量表达式。"allExceptWhileTrue"
(默认) - 禁止在所有循环中使用常量表达式,除了表达式为true
的while
循环。"none"
- 允许在循环中使用常量表达式。
或者,您可以将 checkLoops
值设置为布尔值,其中 true
等同于 "all"
,而 false
等同于 "none"
。
当 checkLoops
为 "all"
或 true
时,此规则的错误代码示例
在 Playground 中打开
/*eslint no-constant-condition: ["error", { "checkLoops": "all" }]*/
while () {
doSomething();
};
for (;;) {
doSomething();
};
在 Playground 中打开
/*eslint no-constant-condition: ["error", { "checkLoops": true }]*/
while () {
doSomething();
};
do {
doSomething();
} while ()
当 checkLoops
为 "all"
或 true
时,此规则的正确代码示例
在 Playground 中打开
/*eslint no-constant-condition: ["error", { "checkLoops": "all" }]*/
while (a === b) {
doSomething();
};
在 Playground 中打开
/*eslint no-constant-condition: ["error", { "checkLoops": true }]*/
for (let x = 0; x <= 10; x++) {
doSomething();
};
当 checkLoops
为 "allExceptWhileTrue"
时的正确代码示例
在 Playground 中打开
/*eslint no-constant-condition: "error"*/
while (true) {
doSomething();
};
当 checkLoops
为 "none"
或 false
时的正确代码示例
在 Playground 中打开
/*eslint no-constant-condition: ["error", { "checkLoops": "none" }]*/
while (true) {
doSomething();
if (condition()) {
break;
}
};
do {
doSomething();
if (condition()) {
break;
}
} while (true)
在 Playground 中打开
/*eslint no-constant-condition: ["error", { "checkLoops": false }]*/
while (true) {
doSomething();
if (condition()) {
break;
}
};
for (;true;) {
doSomething();
if (condition()) {
break;
}
};
相关规则
版本
此规则在 ESLint v0.4.1 中引入。