Heim > Web-Frontend > js-Tutorial > Warum fügt Babel importierten Funktionsaufrufen einen Kommaoperator (0,) hinzu?

Warum fügt Babel importierten Funktionsaufrufen einen Kommaoperator (0,) hinzu?

Patricia Arquette
Freigeben: 2024-11-30 19:36:13
Original
767 Leute haben es durchsucht

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

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()
}
Nach dem Login kopieren

von Babel kompiliert in:

'use strict';

var _b = require('b');

function x() {
  (0, _b.a)();
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage