нет-постоянного-условия
Запрет постоянных выражений в условиях
Использование конфигурации 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 ();
var 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);
var 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