【JavaScript ECMAScript】Function::Function() constructorコンストラクタの使い方
Function() constructorコンストラクタの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
Function() constructor関数は、JavaScriptのプログラムが実行されている最中に、新しい関数オブジェクトを動的に生成する特別な関数です。このコンストラクタは、最後の引数に新しく作る関数の処理内容をJavaScriptコードの文字列として指定し、それより前の引数にはその関数が受け取る仮引数の名前を文字列として指定します。例えば、new Function('a', 'b', 'return a + b;')のように記述すると、aとbという二つの引数を受け取り、それらを合計して返す新しい関数をその場で作成できます。
Function() constructorを用いて作成された関数は、通常の関数宣言や関数式で定義された関数とは異なり、常にグローバルスコープで実行されるという特徴があります。これは、関数が定義された時点の周囲のローカルな環境(クロージャ)にある変数にアクセスできないことを意味します。また、文字列で与えられたコードを実行するため、外部からの入力に応じて悪意のあるコードが挿入されるセキュリティ上の脆弱性を生み出す可能性があり、通常の関数定義に比べて処理性能が低い傾向にあります。
これらの理由から、ほとんどの場合、functionキーワードを使った関数宣言や関数式、あるいはアロー関数を使用することが推奨されます。Function() constructorは、実行時にコードを生成する必要がある特定の高度なシナリオでのみ利用が検討されるべき機能です。
公式リファレンス: Function() constructor
構文(syntax)
1new Function(arg1, arg2, /* …, */ argN, body);
引数(parameters)
...args
- ...args: 実行される関数本体のコード、または関数本体に渡される引数。可変長引数です。
戻り値(return)
戻り値なし
戻り値はありません