# # for-direction

Disallow for loops which update their counter in the wrong direction.

A for loop with a counter may update its value in the wrong direction. that is to say, if i made a counter with a value of `0`, if the for statement checked if `counter < 10` and the update went `counter--`, that loop would be infinite. This is because `counter` will never be smaller than `10` because `counter--` always yields a value smaller than 10. A for loop which does this is almost always a bug because it is either unreachable or infinite.

## # Incorrect Code Examples

``````for (var i = 0; i < 10; i--) {
/* infinite loop */
}
``````
``````for (var i = 10; i >= 20; i++) {
/* unreachable */
}
``````

## # Correct Code Examples

``````for (var i = 0; i < 10; i++) {
}
``````
More incorrect examples
``````for (var i = 0; i < 10; i--) {}
``````
``````for(let i = 0; i < 2; i--) {}
``````
``````for(let i = 0; i <= 2; i += -1) {}
``````
``````for(let i = 2; i >= 0; i -= -1) {}
``````
``````for(let i = 0; i < 2; i -= 1) {}
``````
``````for(let i = 2; i > 2; i++) {}
``````
``````for(let i = 2; i > 2; i += 1) {}
``````
``````for(let i = 5n; i < 2; i--) {}
``````
More correct examples
``````for (var i = 0; i < 10; i++) {}
``````
``````for(let i = 2; i > 2; i -= 1) {}
``````
``````for(let i = 2; i >= 0; i -= 1) {}
``````
``````for(let i = 2; i > 2; i += -1) {}
``````
``````for(let i = 2; i >= 0; i += -1) {}
``````
``````for(let i = 0; i < 3;) {}
``````
``````for(let i = 5; i < 2; i |= 2) {}
``````
``````for(let i = 5n; i < 2n; i &= 2) {}
``````

Source (opens new window)

Last Updated: 11/18/2020, 9:36:33 PM