Heim >Web-Frontend >js-Tutorial >JavaScript-Funktionsaufrufe: Leere Klammern – Sofortiger Aufruf oder Referenzzuweisung?
Der Aufruf einer Funktion mit leeren Klammern oder ohne Klammern kann für Funktionen ohne Argumente belanglos erscheinen. Eine genauere Betrachtung offenbart jedoch einen subtilen Unterschied.
Betrachten Sie die folgenden zwei Beispiele:
window.onload = initAll();
window.onload = initAll;
1 . Sofortiger Aufruf:
Im ersten Beispiel rufen die leeren Klammern die Funktion initAll() sofort auf und der Rückgabewert wird window.onload zugewiesen. Normalerweise ist dies nicht das gewünschte Verhalten, da initAll ausgeführt werden sollte, wenn das Onload-Ereignis auftritt.
2. Referenzzuweisung:
Im zweiten Beispiel wird die initAll-Funktion selbst window.onload zugewiesen. Dies bedeutet, dass die Funktion erst ausgeführt wird, wenn das Ladeereignis ausgelöst wird. Dieser Ansatz stellt sicher, dass der Event-Handler korrekt eingerichtet ist.
In JavaScript sind Funktionen erstklassige Objekte. Dies bedeutet, dass sie in Variablen gespeichert, als Argumente übergeben und als Eigenschaften zugewiesen werden können. Aus diesem Grund ist die folgende Syntax gültig:
window.onload = () => initAll();
In diesem Fall wird eine anonyme Funktion erstellt, die beim Aufruf sofort initAll() aufruft. Die Referenz dieser äußeren Funktion ist jedoch weiterhin window.onload zugewiesen, sodass der Ereignishandler auf das Ladeereignis wartet, um die Ausführung beider Funktionen auszulösen.
Das obige ist der detaillierte Inhalt vonJavaScript-Funktionsaufrufe: Leere Klammern – Sofortiger Aufruf oder Referenzzuweisung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!