ホームページ  >  記事  >  ウェブフロントエンド  >  「eval()」を使用せずにJavaScriptで動的に名前が付けられた関数を作成できますか?

「eval()」を使用せずにJavaScriptで動的に名前が付けられた関数を作成できますか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-11 16:51:03293ブラウズ

Can You Create Dynamically Named Functions in JavaScript Without Using `eval()`?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。