Création de fonction dynamique sans évaluation
Question : Est-il possible de créer une fonction avec un nom déterminé par l'exécution sans recourir à eval() et en utilisant uniquement du JavaScript pur ?
Réponse pour ECMAScript 2015 :
Oui, ES2015 introduit une solution. Les expressions de fonction anonymes affectées aux propriétés d'objet héritent désormais du nom de propriété comme nom de fonction. Ceci peut être combiné avec des noms de propriétés calculés, permettant la création de fonctions avec des noms dynamiques.
Exemple :
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)
Dans ES2015, cette méthode garantit que la fonction a un nom et qu'elle apparaît dans les traces de pile dans les débogueurs. Cependant, notez qu'Edge et Safari peuvent ne pas afficher le nom de la fonction dans les traces de pile.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!