Maison > interface Web > js tutoriel > Pourquoi Babel ajoute-t-il un opérateur virgule lors de l'appel de fonctions importées en mode strict ?

Pourquoi Babel ajoute-t-il un opérateur virgule lors de l'appel de fonctions importées en mode strict ?

Linda Hamilton
Libérer: 2024-12-08 18:03:15
original
832 Les gens l'ont consulté

Why Does Babel Add a Comma Operator When Calling Imported Functions in Strict Mode?

Pourquoi Babel réécrit les appels de fonction importés en mode strict

En mode strict, lorsque Babel rencontre un appel de fonction importé, il le réécrit pour inclure l'opérateur virgule, comme le montre l'exemple ci-dessous :

import { a } from 'b';

function x () {
  a()
}
Copier après la connexion

La sortie compilée en mode strict devient :

'use strict';

var _b = require('b');

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

Cette transformation garantit que la fonction importée est appelée avec cet ensemble sur l'objet global (ou sur non défini si le mode strict est activé). Sans l'opérateur virgule, la fonction importée serait appelée avec cet ensemble dans son module.

Explication de l'opérateur virgule

L'opérateur virgule (,) est utilisé dans JavaScript pour évaluer plusieurs expressions, séparées par des virgules. Il renvoie la valeur de la dernière expression. Dans le code réécrit, l'opérateur virgule est utilisé comme suit :

(0, _b.a)();
Copier après la connexion

Ceci est équivalent au code suivant :

0; // Ignore result
var tmp = _b.a;
tmp();
Copier après la connexion

La première expression, 0, est ignorée. La deuxième expression, _b.a, attribue la fonction importée à la variable tmp. La troisième expression, tmp(), appelle la fonction importée avec cet ensemble sur l'objet global (ou sur undefined en mode strict).

En utilisant l'opérateur virgule, Babel garantit que la fonction importée est toujours appelée avec corriger cette valeur, quel que soit le contexte d'exécution.

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