Encapsulation par Babel des appels de fonction importés
Babel génère souvent du code qui entoure les appels de fonction importés avec un opérateur virgule, (0, fn)( ...), au lieu du fn() attendu. Cette virgule apparemment gratuite peut laisser perplexe. Voyons pourquoi Babel fait cela.
En JavaScript, l'appel d'une fonction sans spécifier explicitement ce contexte est par défaut l'objet global. Cependant, lorsqu'une fonction est définie comme propriété d'un module importé, son contexte est automatiquement défini sur l'objet module. Pour éviter cette « liaison lexicale » et garantir que les fonctions importées s'exécutent toujours dans le contexte global, Babel introduit la syntaxe (0, fn)(...).
L'opérateur virgule évalue l'expression à sa gauche ( 0) tout en rejetant son résultat. Cela donne 0, qui est essentiellement un espace réservé. Le but de cette construction syntaxique est de forcer l'exécution de l'appel de fonction en tant qu'application de fonction, plutôt qu'en tant qu'appel de méthode sur l'objet module importé.
En substance, (0, fn)(... ) obtient l'équivalent de :
0; // Ignore result var tmp = fn; tmp();
En plaçant la virgule inutile, Babel intercepte efficacement l'appel de fonction et l'exécute avec le contexte this défini sur l'objet global. Cela garantit que la fonction peut accéder aux variables et fonctions globales sans déclencher de liaisons lexicales involontaires.
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!