跳至內容

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

參考資料

以 MIT 授權發布。