ホームページ >ウェブフロントエンド >jsチュートリアル >「eval」や非標準機能を使用せずに、JavaScript 関数に動的に名前を付けることはできますか?

「eval」や非標準機能を使用せずに、JavaScript 関数に動的に名前を付けることはできますか?

DDD
DDDオリジナル
2024-11-17 11:08:01635ブラウズ

Can You Dynamically Name JavaScript Functions Without Using `eval` or Non-Standard Features?

JavaScript で動的名を持つ関数を作成する

eval や非標準の JavaScript 機能に頼らずに、関数に実際の名前を動的に割り当てることはできますか?この疑問は、デバッグ コンテキストで識別可能な名前を持つ関数を探すときに発生します。

ECMAScript 2015 以降 (ES6) のソリューション

ES2015 ではソリューションが導入されています。無名関数式をオブジェクト プロパティに割り当てると、関数にそのプロパティの名前が与えられます。これを計算されたプロパティ名と組み合わせることで、Function コンストラクターや eval に依存せずに関数に名前を付けることができます。

ES2015 では、次のコード スニペットは動的な名前を持つ関数を作成します。

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

関数の名前は、name プロパティを通じて取得することも、エラー スタック トレースで観察することもできます:

console.log("Function's `name` property: " + f.name + " (see compatibility note)");

try {
    f();
} catch (e) {
    console.log(e.stack);
}

特定のブラウザーでは注意してください。スタック トレースに名前が表示されない場合があります。

以上が「eval」や非標準機能を使用せずに、JavaScript 関数に動的に名前を付けることはできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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