eslint/for-direction 准确性
作用
不允许 for
循环更新导致计数器向错误的方向移动。
为什么这么糟糕?
for
循环结束条件永远无法达到的(例如计数器向错误的方向移动),将无限运行。虽然有时需要无限循环,但惯例是将其构造为 while
循环。更加普遍的是,无限 for
循环是一种缺陷。
此规则禁止 for
循环,其中的计数器变量以这样一种方式改变,使得永远不会满足停止条件。例如,如果计数器变量递增(即 i++
)且停止条件测试计数器是否大于零(i >= 0
),则循环永远不会退出。
示例
本规则禁止的错误代码示例
js
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) {}
本规则允许的正确代码示例
js
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
}