Maison >interface Web >js tutoriel >Pourquoi Babel utilise-t-il `(0, fn)(...)` lors de l'appel de fonctions importées ?

Pourquoi Babel utilise-t-il `(0, fn)(...)` lors de l'appel de fonctions importées ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-14 22:24:19200parcourir

Why Does Babel Use `(0, fn)(...)` When Calling Imported Functions?

Pourquoi (0, appel de fonction Babel) dans la sortie compilée de Babel ?

Lors de l'importation de fonctions à partir de modules externes et de leur utilisation dans votre code, vous remarquerez peut-être un comportement intéressant dans la sortie transformée de Babel. Les fonctions sont enveloppées sous la forme (0, fn)(...). Ceci diffère de l'appel de fonction d'origine sans l'opérateur virgule lorsqu'il est compilé en mode libre.

Cette transformation a un objectif précis : elle garantit que le contexte this de la fonction est défini soit sur l'objet global en mode non strict ou indéfini en mode strict. Lors de l'appel direct de _b.a(), this serait par défaut l'objet module _b .

En utilisant (0, _b.a)(), Babel force la fonction à appeler avec this défini sur la valeur appropriée. L'opérateur virgule (,) supprime essentiellement la valeur de retour de l'expression précédente (dans ce cas, 0) et évalue le côté droit, qui est l'appel de fonction dans ce cas.

Essentiellement, l'opérateur transformé code est équivalent à :

0; // Ignore result
var tmp = _b.a;
tmp();

Cette technique garantit que le contexte ce de la fonction est cohérent avec le comportement attendu.

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