ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript で実行時に決定される名前を持つ関数を作成する方法 (Eval なし)?

JavaScript で実行時に決定される名前を持つ関数を作成する方法 (Eval なし)?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-12 08:34:01305ブラウズ

How to Create Functions with Runtime-Determined Names in JavaScript (Without Eval)?

実行時に決定される名前を持つ関数の作成 (Eval なし)

JavaScript では、実行時に決定される名前を持つ関数の作成が ECMAScript 2015 で実現可能です。以降は、匿名関数式と計算プロパティという 2 つの重要な機能を利用します。 names.

ES2015 の解決策:

ES2015 では、オブジェクト プロパティに割り当てられた匿名関数式は、そのプロパティの名前を継承します。これにより、次のことが可能になります。

const dynamicName = "foo" + Math.floor(Math.random() * 1000);
const obj = {
  [dynamicName]() {
    throw new Error();
  },
};
const f = obj[dynamicName];

// Demonstrate function's name property
console.log("Function's `name` property: " + f.name);

// Exception handling reveals the name in stack traces
try {
  f();
} catch (e) {
  console.log(e.stack);
}

このコードでは、

  • dynamicName は関数の名前を動的に決定します。
  • obj は、dynamicName という名前のプロパティを持つオブジェクトです。
  • dynamicName プロパティに割り当てられた匿名関数式は、間接的にname.

互換性に関する注意:

最新のブラウザーはすべてこの機能を実装していますが、Edge と Safari は割り当てられた名前をスタック トレースに表示しないことに注意してください。

以上がJavaScript で実行時に決定される名前を持つ関数を作成する方法 (Eval なし)?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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