Maison  >  Article  >  interface Web  >  Pouvez-vous créer des fonctions nommées au moment de l'exécution en JavaScript sans « eval » ?

Pouvez-vous créer des fonctions nommées au moment de l'exécution en JavaScript sans « eval » ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-12 18:21:02867parcourir

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

Fonctions nommées à l'exécution sans évaluation en JavaScript

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à.

Solution ES6 : noms de propriétés calculés

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.

Visibilité du nom de la fonction

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn