Réécriture d'appels de fonction dans Babel : compréhension de l'opérateur virgule
Babel, un compilateur JavaScript populaire, convertit le code ES6 en versions compatibles pour les navigateurs plus anciens . Lorsqu'il rencontre un appel de fonction provenant d'un module importé, Babel ajoute souvent un opérateur virgule (0,) au début de l'appel. Ce comportement soulève des questions sur son objectif.
Plus précisément, un fichier d'entrée contenant un appel de fonction d'importation :
import { a } from 'b'; function x () { a() }
est compilé par Babel dans :
'use strict'; var _b = require('b'); function x() { (0, _b.a)(); }
Babel's le comportement par défaut est de compiler en mode strict, d'où le (0,). En mode libre, l'appel de fonction est généré sous la forme _b.a() sans l'opérateur virgule.
Explication de l'opérateur virgule
L'ajout de (0,) garantit que la fonction importée est appelée avec l'objet global comme valeur this, ou non définie si le mode strict est activé. Sans la virgule, _b.a() serait appelé avec _b comme valeur this.
L'opérateur virgule évalue la première expression (0) comme indéfinie et ignore son résultat. Il évalue ensuite la deuxième expression (_b.a) et l'affecte à une variable temporaire (tmp). Enfin, il appelle la variable temporaire (tmp()) avec l'objet global comme valeur this.
Essentiellement, cette technique permet à la fonction importée de fonctionner globalement sans affecter la valeur this du contexte appelant.
Conclusion
L'utilisation par Babel de l'opérateur virgule dans les appels de fonction importés garantit que la fonction est appelée correctement quel que soit le contexte d'appel. Cette technique est implémentée en supprimant le résultat de la première expression virgule et en appelant une variable temporaire avec l'objet global comme valeur this.
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!