eslint/for-direction Correctness
What it does
Disallow for
loops where the update clause moves the counter in the wrong direction, preventing the loop from reaching its stop condition.
Why is this bad?
A for
loop with a stop condition that can never be reached will run infinitely. While infinite loops can be intentional, they are usually written as while
loops. More often, an infinite for
loop is a bug.
Options
No options available for this rule.
Examples
Examples of incorrect code for this rule:
js
/* eslint for-direction: "error" */
for (var i = 0; i < 10; i--) {
}
for (var i = 10; i >= 0; i++) {
}
for (var i = 0; i > 10; i++) {
}
for (var i = 0; 10 > i; i--) {
}
const n = -2;
for (let i = 0; i < 10; i += n) {
}
Examples of correct code for this rule:
js
/* eslint for-direction: "error" */
for (var i = 0; i < 10; i++) {
}
for (var i = 0; 10 > i; i++) { // with counter "i" on the right
}
for (let i = 10; i >= 0; i += this.step) { // direction unknown
}
for (let i = MIN; i <= MAX; i -= 0) { // not increasing or decreasing
}
How to use
To enable this rule in the CLI or using the config file, you can use:
bash
oxlint --deny for-direction
json
{
"rules": {
"for-direction": "error"
}
}