Skip to content
← Back to rules

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

使用方法

設定ファイルまたは CLI でこのルールを有効化するには、次のように使用できます:

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

参照