Maison > interface Web > js tutoriel > Pourquoi Babel ajoute-t-il un opérateur virgule (0,) aux appels de fonction importés ?

Pourquoi Babel ajoute-t-il un opérateur virgule (0,) aux appels de fonction importés ?

Patricia Arquette
Libérer: 2024-11-30 19:36:13
original
765 Les gens l'ont consulté

Why Does Babel Add a Comma Operator (0,) to Imported Function Calls?

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()
}
Copier après la connexion

est compilé par Babel dans :

'use strict';

var _b = require('b');

function x() {
  (0, _b.a)();
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal