Est-il possible de créer une fonction JavaScript avec un nom déterminé au moment de l'exécution, sans utiliser d'évaluation ou de fonctionnalités non conventionnelles spécifiques au moteur ? Oui, cela est désormais possible avec ECMAScript 2015 (ES6) et au-delà.
Dans ES6, une expression de fonction anonyme affectée à une propriété d'objet prend le nom de celle-ci. propriété. Cela peut être combiné avec des noms de propriétés calculés pour nommer une fonction sans nouvelle fonction ni évaluation. Par exemple :
const dynamicName = "foo" + Math.floor(Math.random() * 1000); const obj = { [dynamicName]() { throw new Error(); }, }; const f = obj[dynamicName];
Cela crée une fonction nommée "foo###" où ### est un nombre aléatoire de 1 à 3 chiffres.
La propriété name de la fonction reflétera le nom dynamique. La note de compatibilité dans l'extrait de code ci-dessus fait référence au fait qu'Edge et Safari n'affichent actuellement pas le nom 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!