Eval を使用しない動的関数の作成
質問: 実行時に決定される名前で関数を作成することは可能ですか? eval() に頼らず、純粋な JavaScript のみを使用しますか?
ECMAScript 2015 の回答:
はい、ES2015 ではソリューションが導入されています。オブジェクト プロパティに割り当てられた匿名関数式は、プロパティ名を関数名として継承するようになりました。これを計算されたプロパティ名と組み合わせることで、動的な名前を持つ関数を作成できます。
例:
const dynamicName = "foo" + Math.floor(Math.random() * 1000); const obj = { [dynamicName]() { throw new Error(); }, }; const f = obj[dynamicName]; console.log("Function's `name` property: " + f.name); // Logs: "foo###" (where ### is 1-3 digits)
ES2015 では、このメソッドは関数に名前があり、その関数がデバッガーのスタック トレースに表示されます。ただし、Edge と Safari ではスタック トレースに関数名が表示されない場合があるので注意してください。
以上が「eval()」を使用せずにJavaScriptで動的に名前が付けられた関数を作成できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。