ホームページ  >  記事  >  ウェブフロントエンド  >  「eval」を使用せずに JavaScript でランタイム名付き関数を作成できますか?

「eval」を使用せずに JavaScript でランタイム名付き関数を作成できますか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-12 18:21:02915ブラウズ

Can You Create Runtime-Named Functions in JavaScript Without `eval`?

JavaScript で Eval を使用しない実行時名前付き関数

eval や型破りなエンジン固有の機能を使用せずに、実行時に決定される名前を持つ JavaScript 関数を作成することは可能ですか? ?はい、これは ECMAScript 2015 (ES6) 以降で可能になりました。

ES6 の解決策: 計算されたプロパティ名

ES6 では、オブジェクト プロパティに割り当てられた匿名関数式は、その名前を取得します。財産。これを計算されたプロパティ名と組み合わせて、新しい Function や eval を使用せずに関数に名前を付けることができます。例:

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

これにより、「foo###」という名前の関数が作成されます。### は、1 ~ 3 桁のランダムな数字です。

関数名の可視性

関数の name プロパティには動的な名前が反映されます。上記のコード スニペットの互換性に関する注記は、現在、Edge と Safari ではスタック トレースに名前が表示されないという事実を示しています。

以上が「eval」を使用せずに JavaScript でランタイム名付き関数を作成できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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