Heim >Web-Frontend >js-Tutorial >Warum fügt Babel importierten Funktionsaufrufen einen Kommaoperator (0,) hinzu?
Umschreiben von Funktionsaufrufen in Babel: Den Kommaoperator verstehen
Babel, ein beliebter JavaScript-Compiler, konvertiert ES6-Code in kompatible Versionen für ältere Browser . Wenn ein Funktionsaufruf von einem importierten Modul auftritt, fügt Babel häufig einen Kommaoperator (0,) am Anfang des Aufrufs hinzu. Dieses Verhalten wirft Fragen über seinen Zweck auf.
Konkret wird eine Eingabedatei, die einen Importfunktionsaufruf enthält:
import { a } from 'b'; function x () { a() }
von Babel kompiliert in:
'use strict'; var _b = require('b'); function x() { (0, _b.a)(); }
Babels Das Standardverhalten besteht darin, im strikten Modus zu kompilieren, daher (0,). Im Loose-Modus wird der Funktionsaufruf als _b.a() ohne Komma-Operator ausgegeben.
Erklärung des Komma-Operators
Die Addition von (0,) sorgt dafür dass die importierte Funktion mit dem globalen Objekt als diesem Wert aufgerufen wird, oder undefiniert, wenn der strikte Modus aktiviert ist. Ohne das Komma würde _b.a() mit _b als diesem Wert aufgerufen.
Der Kommaoperator wertet den ersten Ausdruck (0) als undefiniert aus und ignoriert sein Ergebnis. Anschließend wertet es den zweiten Ausdruck (_b.a) aus und weist ihn einer temporären Variablen (tmp) zu. Schließlich ruft es die temporäre Variable (tmp()) mit dem globalen Objekt als this-Wert auf.
Im Wesentlichen ermöglicht diese Technik, dass die importierte Funktion global funktioniert, ohne den this-Wert des aufrufenden Kontexts zu beeinflussen.
Fazit
Babels Verwendung des Kommaoperators in importierten Funktionsaufrufen stellt sicher, dass die Funktion unabhängig vom Aufrufkontext korrekt aufgerufen wird. Diese Technik wird implementiert, indem das Ergebnis des ersten Komma-Ausdrucks verworfen und eine temporäre Variable mit dem globalen Objekt als diesem Wert aufgerufen wird.
Das obige ist der detaillierte Inhalt vonWarum fügt Babel importierten Funktionsaufrufen einen Kommaoperator (0,) hinzu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!