4 votes

Compilation des fonctions fléchées de Babel en ES5

Utilisation Babel J'ai remarqué quelque chose d'un peu bizarre.

Ne devrait pas const app = () => {} est égal à var app = function() {} ?

Retour de Babel var app = function app() {} .

4voto

Jared Smith Points 101

Non, babel a raison car une fonction arrow assignée à une var devrait en théorie avoir une propriété name équivalente au nom de cette var pour faciliter les traces de pile et la réflexion. Voir este pour plus d'informations. Résumé rapide au cas où il ne serait plus d'actualité :

La propriété name d'une fonction est créée au moment de la déclaration. La propriété de nom d'une expression de fonction est déduite de la liaison de nom :

var foo = function() {};
console.log(foo.name); // foo

Les fonctions fléchées ont le même comportement :

var foo = () => {};
console.log(foo.name); // foo

Comme cela n'a pas été normalisé avant ES 2015/ES 6, babel doit ajouter le nom pour créer un fichier nommée expression de la fonction :

var foo = function foo() {}; // notice it's function *foo* now

pour prendre en charge les environnements existants.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X