Heim >Web-Frontend >js-Tutorial >Warum werden Funktionsaufrufe in „setTimeout' nicht immer von Klammern umgeben?
Wann sind Klammern in Funktionsaufrufen zu verwenden?
Wenn man den folgenden Code untersucht:
var myFunction = function() { setTimeout(myFunction, 1000); } myFunction();
Man fragt sich vielleicht, warum Für den Funktionsaufruf innerhalb von setTimeout sind keine Klammern erforderlich, während für den unabhängigen Funktionsaufruf keine Klammern erforderlich sind tut.
Die Unterscheidung verstehen
Timeout-Funktionsargumente
setTimeout verwendet eine Funktionsreferenz als eines seiner Argumente. Im angegebenen Code wird myFunction als Callback-Funktion referenziert.
Klammern in Timeout-Argumenten
Das Einfügen von Klammern in setTimeout(myFunction(), 1000) kann unbeabsichtigte Folgen haben wenn myFunction eine Funktion zurückgibt (z. B. unter Verwendung von Pfeilfunktionen). In solchen Fällen würde setTimeout den Rückgabewert von myFunction anstelle der Funktionsreferenz selbst erhalten. Dies könnte zu wiederholten Funktionsausführungen oder unerwartetem Verhalten führen.
Daher wird bei der Verwendung von setTimeout oder ähnlichen Methoden, die eine Funktionsreferenz erwarten, generell empfohlen, Klammern für das Funktionsargument wegzulassen.
Das obige ist der detaillierte Inhalt vonWarum werden Funktionsaufrufe in „setTimeout' nicht immer von Klammern umgeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!