eslint/no-new-func 样式
它做什么
此规则禁止使用带有 Function
对象的 new
运算符。
为什么这样做不好?
使用 new Function
或 Function
可能导致难以理解和维护的代码。它会引入类似于与 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;
};