Heim >Web-Frontend >js-Tutorial >Warum werden Funktionsaufrufe in „setTimeout' nicht immer von Klammern umgeben?

Warum werden Funktionsaufrufe in „setTimeout' nicht immer von Klammern umgeben?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-23 18:27:17718Durchsuche

Why Don't Parentheses Always Surround Function Calls in `setTimeout`?

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

  • myFunction: Dieser Name bezieht sich auf die Funktionsdefinition.
  • myFunction(): Das Hinzufügen von Klammern ruft auf Funktion.

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!

Stellungnahme:
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