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() }
La sortie compilée en mode strict devient :
'use strict'; var _b = require('b'); function x() { (0, _b.a)(); }
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)();
Ceci est équivalent au code suivant :
0; // Ignore result var tmp = _b.a; tmp();
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!