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!