跳转至正文

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
}

参考

在 MIT 许可证下发布。