eslint/no-new-func Style ​
What it does ​
The rule disallow new
operators with the Function
object.
Why is this bad? ​
Using new Function
or Function
can lead to code that is difficult to understand and maintain. It can introduce security risks similar to those associated with eval
because it generates a new function from a string of code, which can be a vector for injection attacks. Additionally, it impacts performance negatively as these functions are not optimized by the JavaScript engine.
Examples ​
Examples of incorrect code for this rule:
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");
Examples of correct code for this rule:
js
let x = function (a, b) {
return a + b;
};