Heim >Web-Frontend >js-Tutorial >Warum fügt Babel beim Aufruf importierter Funktionen im strengen Modus einen Kommaoperator hinzu?
Warum Babel importierte Funktionsaufrufe im strikten Modus umschreibt
Wenn Babel im strikten Modus auf einen importierten Funktionsaufruf stößt, schreibt es diesen um, um ihn einzuschließen der Kommaoperator, wie im Beispiel unten zu sehen:
import { a } from 'b'; function x () { a() }
Die kompilierte Ausgabe im strikten Modus wird zu:
'use strict'; var _b = require('b'); function x() { (0, _b.a)(); }
Diese Transformation stellt sicher, dass die importierte Funktion mit dieser Einstellung auf das globale Objekt aufgerufen wird (oder auf undefiniert, wenn der strikte Modus aktiviert ist). Ohne den Komma-Operator würde die importierte Funktion mit dieser Einstellung auf ihr Modul aufgerufen.
Erklärung des Komma-Operators
Der Komma-Operator (,) wird in verwendet JavaScript zur Auswertung mehrerer durch Kommas getrennter Ausdrücke. Es gibt den Wert des letzten Ausdrucks zurück. Im umgeschriebenen Code wird der Kommaoperator wie folgt verwendet:
(0, _b.a)();
Dies entspricht dem folgenden Code:
0; // Ignore result var tmp = _b.a; tmp();
Der erste Ausdruck, 0, wird ignoriert. Der zweite Ausdruck, _b.a, weist die importierte Funktion der tmp-Variablen zu. Der dritte Ausdruck, tmp(), ruft die importierte Funktion auf, wobei dieser Wert auf das globale Objekt (oder auf undefiniert im strikten Modus) gesetzt ist.
Durch die Verwendung des Kommaoperators stellt Babel sicher, dass die importierte Funktion immer mit aufgerufen wird Der korrekte Wert ist unabhängig vom Ausführungskontext.
Das obige ist der detaillierte Inhalt vonWarum fügt Babel beim Aufruf importierter Funktionen im strengen Modus einen Kommaoperator hinzu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!