no-unmodified-loop-condition
Запрещает неизменяемые условия циклов
Переменные в условии цикла часто изменяются в цикле. Если этого не происходит, возможно, это ошибка.
while (node) {
doSomething(node);
}
while (node) {
doSomething(node);
node = node.parent;
}
Подробности правила
Это правило находит ссылки внутри условий циклов, а затем проверяет, изменяются ли в цикле переменные, на которые ссылаются.
Если ссылка находится внутри бинарного или тернарного выражения, правило проверяет результат выражения. Если ссылка находится внутри динамического выражения (например, CallExpression, YieldExpression, …), правило игнорирует её.
Примеры некорректного кода для этого правила:
/*eslint no-unmodified-loop-condition: "error"*/
let node = something;
while () {
doSomething(node);
}
node = other;
for (let j = 0; < 5;) {
doSomething(j);
}
while ( !== root) {
doSomething(node);
}
Примеры корректного кода для этого правила:
/*eslint no-unmodified-loop-condition: "error"*/
while (node) {
doSomething(node);
node = node.parent;
}
for (let j = 0; j < items.length; ++j) {
doSomething(items[j]);
}
// OK, the result of this binary expression is changed in this loop.
while (node !== root) {
doSomething(node);
node = node.parent;
}
// OK, the result of this ternary expression is changed in this loop.
while (node ? A : B) {
doSomething(node);
node = node.parent;
}
// A property might be a getter which has side effect...
// Or "doSomething" can modify "obj.foo".
while (obj.foo) {
doSomething(obj);
}
// A function call can return various values.
while (check(obj)) {
doSomething(obj);
}
Параметры
У этого правила нет параметров.
Когда не следует использовать это правило
Если вы не хотите получать предупреждения о ссылках внутри условий циклов, это правило можно отключить.
Версия
Это правило появилось в ESLint v2.0.0-alpha-2.
Ресурсы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/no-unmodified-loop-condition