no-constant-condition
Запрещает константные выражения в условиях
Использование конфигурации recommended из @eslint/js в файле конфигурации включает это правило
Константное выражение (например, литерал) в качестве условия проверки может быть опечаткой или триггером разработки для определённого поведения. Например, следующий код выглядит так, будто он не готов к использованию в рабочей среде.
if (false) {
doSomethingUnfinished();
}
Подробности правила
Это правило запрещает константные выражения в условии проверки для следующих конструкций:
-
if,for,whileилиdo...whileоператор -
тернарное выражение
?:
Примеры неправильного кода для этого правила:
/*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);
}
Примеры правильного кода для этого правила:
/*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);
}
Параметры
checkLoops
Эта строковая настройка принимает следующие значения:
-
"all"— запрещает константные выражения во всех циклах. -
"allExceptWhileTrue"(по умолчанию) — запрещает константные выражения во всех циклах, кроме цикловwhileс выражениемtrue. -
"none"— разрешает константные выражения в циклах.
Также вместо этого можно задать для значения checkLoops логические значения: true эквивалентно "all", а false эквивалентно "none".
Примеры неправильного кода, если checkLoops имеет значение "all" или true:
/*eslint no-constant-condition: ["error", { "checkLoops": "all" }]*/
while () {
doSomething();
};
for (;;) {
doSomething();
};
/*eslint no-constant-condition: ["error", { "checkLoops": true }]*/
while () {
doSomething();
};
do {
doSomething();
} while ()
Примеры правильного кода, если checkLoops имеет значение "all" или 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();
};
Пример правильного кода, если checkLoops имеет значение "allExceptWhileTrue":
/*eslint no-constant-condition: "error"*/
while (true) {
doSomething();
};
Примеры правильного кода, если checkLoops имеет значение "none" или 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;
}
};
Связанные правила
Версия
Это правило появилось в ESLint v0.4.1.
Ресурсы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/no-constant-condition