Skip to content
← Back to rules

eslint/no-new-func 风格

它做了什么

该规则禁止对 Function 对象使用 new 操作符。

为什么这是不好的?

使用 new FunctionFunction 可能导致代码难以理解与维护。由于它从代码字符串中生成新函数,其带来的安全风险类似于 eval,可能成为注入攻击的载体。此外,这种用法会负面影响性能,因为这些函数无法被 JavaScript 引擎优化。

示例

以下为 错误 的代码示例:

js
var x = new Function("a", "b", "return a + b");
var x = Function("a", "b", "return a + b");
var x = Function.call(null, "a", "b", "return a + b");
var x = Function.apply(null, ["a", "b", "return a + b"]);
var x = Function.bind(null, "a", "b", "return a + b")();
var f = Function.bind(null, "a", "b", "return a + b");

以下为 正确 的代码示例:

js
let x = function (a, b) {
  return a + b;
};

如何使用

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

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

参考资料