Skip to content
← Back to rules

eslint/no-loop-func 严格检查

An auto-fix is available for this rule.

它的作用

禁止在循环语句中声明或表达函数,当这些函数引用了在外部作用域中声明且可能在迭代过程中发生变化的变量时。

为什么这是不好的?

在循环中编写函数通常会导致错误,原因在于 JavaScript 中闭包的工作方式。函数通过引用捕获变量,而不是通过值。当使用 var(函数作用域)时,所有迭代共享同一个变量绑定,从而导致意外行为。

示例

此规则的 错误 代码示例:

js
for (var i = 0; i < 10; i++) {
  funcs[i] = function () {
    return i;
  };
}

此规则的 正确 代码示例:

js
for (let i = 0; i < 10; i++) {
  funcs[i] = function () {
    return i;
  };
}

如何使用

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

json
{
  "rules": {
    "no-loop-func": "error"
  }
}
bash
oxlint --deny no-loop-func

参考资料