Skip to content
← Back to rules

eslint/for-direction 正确性

This rule is turned on by default.
⚠️🛠️ A dangerous auto-fix is available for this rule.

它的作用

禁止 for 循环中更新语句使计数器向错误方向移动的情况,这会导致循环无法达到终止条件。

为什么这是不好的?

一个具有永远无法达到的终止条件的 for 循环将无限执行。虽然无限循环有时是故意设计的,但通常应使用 while 循环来表达。更常见的情况是,无限的 for 循环是一个错误。

示例

此规则的错误代码示例:

js
/* 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) {}

此规则的正确代码示例:

js
/* for-direction: "error" */

for (var i = 0; i < 10; i++) {}

for (var i = 0; 10 > i; i++) {
  // 计数器 "i" 在右侧
}

for (let i = 10; i >= 0; i += this.step) {
  // 方向未知
}

for (let i = MIN; i <= MAX; i -= 0) {
  // 既不递增也不递减
}

如何使用

要通过配置文件或命令行启用此规则,可以使用:

json
{
  "rules": {
    "for-direction": "error"
  }
}
bash
oxlint --deny for-direction

参考资料