Heim > Web-Frontend > js-Tutorial > Warum verwendet Babel „(0, fn)(...)' beim Aufruf importierter Funktionen?

Warum verwendet Babel „(0, fn)(...)' beim Aufruf importierter Funktionen?

Susan Sarandon
Freigeben: 2024-12-14 22:24:19
Original
198 Leute haben es durchsucht

Why Does Babel Use `(0, fn)(...)` When Calling Imported Functions?

Warum (0, Babel-Funktionsaufruf) in Babels kompilierter Ausgabe?

Wenn Sie Funktionen aus externen Modulen importieren und in Ihrem Code verwenden, Möglicherweise bemerken Sie ein interessantes Verhalten in der transformierten Ausgabe von Babel. Funktionen werden in der Form (0, fn)(...) verpackt. Dies unterscheidet sich vom ursprünglichen Funktionsaufruf ohne Komma-Operator beim Kompilieren im losen Modus.

Diese Transformation hat einen bestimmten Zweck: Sie stellt sicher, dass der dieser-Kontext der Funktion auf eines der globalen Objekte festgelegt wird im nicht strikten Modus oder undefiniert im strikten Modus. Beim direkten Aufruf von _b.a() würde this standardmäßig das _b Modulobjekt verwenden.

Durch die Verwendung von (0, _b.a)() wird Babel erzwungen die Funktion, die aufgerufen werden soll, wobei this auf den entsprechenden Wert gesetzt ist. Der Kommaoperator (,) verwirft im Wesentlichen den Rückgabewert des vorhergehenden Ausdrucks (in diesem Fall 0) und wertet die rechte Seite aus, in diesem Fall den Funktionsaufruf.

Im Wesentlichen die transformierte Code ist äquivalent zu:

0; // Ignore result
var tmp = _b.a;
tmp();
Nach dem Login kopieren

Diese Technik garantiert, dass der dieser Kontext der Funktion mit dem erwarteten Verhalten übereinstimmt.

Das obige ist der detaillierte Inhalt vonWarum verwendet Babel „(0, fn)(...)' beim Aufruf importierter Funktionen?. 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