跳至内容

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;
};

引用

根据 MIT 许可证发布。