JavaScriptで動的関数生成!Functionコンストラクタの使い方
投稿日 2025年02月07日 更新日 2025年02月07日
JavaScriptでは、Functionコンストラクタを使用することで動的に関数を生成することができます。この記事では、Functionコンストラクタの基本的な使い方から実践的な例まで、わかりやすく解説します。
Functionコンストラクタとは
Functionコンストラクタは、JavaScriptの組み込みオブジェクトの1つで、実行時に新しい関数を作成するために使用されます。
基本的な構文
const func = new Function(arg1, arg2, ..., functionBody);
- `arg1, arg2, ...`: 関数の引数名(文字列)
- `functionBody`: 関数の本体(文字列)
基本的な使用例
const sum = new Function('a', 'b', 'return a + b');
console.log(sum(2, 3)); // 出力: 5
実践的な使用例
1. 動的な計算式の生成
function createMathFunction(operator) {
return new Function('x', 'y', `return x ${operator} y`);
}
const multiply = createMathFunction('*');
console.log(multiply(4, 5)); // 出力: 20
2. テンプレート文字列との組み合わせ
const variable = 'message';
const greet = new Function(variable, 'console.log("Hello, " + message)');
greet('World'); // 出力: Hello, World
注意点
1. セキュリティリスク
- eval()と同様に、悪意のあるコードが実行される可能性があるため、ユーザー入力を直接使用することは避けるべきです。
2. スコープの制限
- Functionコンストラクタで作成された関数は、グローバルスコープでのみ実行されます。
- クロージャーにアクセスできません。
const x = 10;
const func = new Function('return x');
// ReferenceError: x is not defined
3. パフォーマンスへの影響
- 動的関数生成は、通常の関数定義に比べて処理が遅くなる可能性があります。
推奨される使用シーン
- 動的なAPIコール
- プラグインシステムの実装
- 数式パーサーの作成
// APIコールの例
const createApiCall = (endpoint) => {
return new Function('data', `
return fetch('${endpoint}', {
method: 'POST',
body: JSON.stringify(data)
});
`);
};
まとめ
Functionコンストラクタは、JavaScriptで動的に関数を生成する強力なツールです。しかし、セキュリティリスクや性能への影響を考慮し、適切なユースケースで使用することが重要です。通常の関数定義で対応できる場合は、それを優先することをお勧めします。
正しく使用することで、柔軟で動的なプログラミングが可能になり、アプリケーションの機能性を大きく向上させることができます。
関連記事

新着記事
5
6
7
関連記事
5
6
7


60秒で完了