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 循环是一个 bug。

示例

此规则不正确代码的示例:

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) {
  // 未增加或减少
}

如何使用

To enable this rule using the config file or in the CLI, you can use:

json
{
  "rules": {
    "for-direction": "error"
  }
}
ts
import { defineConfig } from "oxlint";

export default defineConfig({
  rules: {
    "for-direction": "error",
  },
});
bash
oxlint --deny for-direction

版本

此规则在 v0.0.3 中添加。

参考资料