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();
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!