# no-constant-condition
禁止条件中的常量表达式
配置文件中的 "extends": "eslint:recommended" 属性启用了该规则
作为测试条件的常量表达式(例如,字面)可能是特定行为的拼写错误或开发触发器。例如,以下代码看起来好像还没有准备好投入生产。
if (false) {
    doSomethingUnfinished();
}
# 规则详情
此规则不允许在以下测试条件中使用常量表达式:
- if、- for、- while或- do...while语句
- ?:三元表达式
此规则的错误代码示例:
/*eslint no-constant-condition: "error"*/
if (false) {
    doSomethingUnfinished();
}
if (void x) {
    doSomethingUnfinished();
}
if (x &&= false) {
    doSomethingNever();
}
if (class {}) {
    doSomethingAlways();
}
if (new Boolean(x)) {
    doSomethingAlways();
}
if (Boolean(1)) {
    doSomethingAlways();
}
if (undefined) {
    doSomethingUnfinished();
}
if (x ||= true) {
    doSomethingAlways();
}
for (;-2;) {
    doSomethingForever();
}
while (typeof x) {
    doSomethingForever();
}
do {
    doSomethingForever();
} while (x = -1);
var result = 0 ? a : b;
此规则的正确代码示例:
/*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;
# 选项
# checkLoops
默认设置为 true。将此选项设置为 false 允许循环中的常量表达式。
checkLoops 为 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)
