Heim > Web-Frontend > js-Tutorial > Warum gibt es bei setTimeout unterschiedliche Möglichkeiten, Funktionen aufzurufen?

Warum gibt es bei setTimeout unterschiedliche Möglichkeiten, Funktionen aufzurufen?

Mary-Kate Olsen
Freigeben: 2024-11-25 12:36:11
Original
200 Leute haben es durchsucht

Why Does setTimeout Have Different Ways of Calling Functions?

Untersuchung des Klammer- und Zitat-Rätsels von setTimeout

Bei der Untersuchung von JavaScript-Timing-Ereignissen ruft die setTimeout-Funktion aufgrund ihrer vielfältigen Verwendung oft Verwirrung hervor . Lassen Sie uns die Unterschiede zwischen drei gängigen Aufrufmethoden klären:

Mit Klammern

setTimeout("alertMsg()", 3000);
Nach dem Login kopieren

In dieser Syntax wird die Funktion als Zeichenfolge innerhalb von double übergeben Zitate. JavaScript interpretiert dies als Codezeichenfolge, die nach der angegebenen Zeit ausgeführt werden soll. Von dieser Verwendung wird aufgrund von Sicherheitslücken abgeraten.

Ohne Anführungszeichen und Klammern

setTimeout(alertMsg, 3000);
Nach dem Login kopieren

Dieser sauberere Ansatz übergibt die Funktion direkt als Referenz. Die Referenz kann eine benannte Funktion, eine anonyme Funktion oder eine Variable sein, die auf eine Funktion zeigt. Dies ist die bevorzugte Methode, da sie potenzielle Sicherheitsbedenken beseitigt und den Code vereinfacht.

Nur Verwendung von Anführungszeichen

setTimeout("alertMsg", 3000);
Nach dem Login kopieren

In dieser besonderen Syntax wird eine Zeichenfolge übergeben ohne Klammern. Diese Methode ist veraltet und kann zu unvorhersehbarem Verhalten führen.

Um eine Funktion mit Argumenten in setTimeout aufzurufen, können Sie den Aufruf entweder in den Rückruf einbetten oder die Argumente in der letztgenannten Syntax angeben (nicht browserübergreifend kompatibel). :

setTimeout(function() { foo(arg1, arg2); }, 1000);
Nach dem Login kopieren

oder

setTimeout(foo, 2000, arg1, arg2);
Nach dem Login kopieren

Denken Sie daran, dass der Rückrufkontext (das Schlüsselwort this) standardmäßig verwendet wird zum globalen Objekt. Um es zu ändern, verwenden Sie die bind()-Methode:

setTimeout(function() { this === YOUR_CONTEXT; // true }.bind(YOUR_CONTEXT), 2000);
Nach dem Login kopieren

Es ist wichtig zu beachten, dass aufgrund von Sicherheitsrisiken dringend von der Übergabe von Zeichenfolgen an setTimeout abgeraten wird. Übergeben Sie Funktionsverweise immer direkt, um die Sicherheit zu gewährleisten und eine vorhersehbare Ausführung zu gewährleisten.

Das obige ist der detaillierte Inhalt vonWarum gibt es bei setTimeout unterschiedliche Möglichkeiten, Funktionen aufzurufen?. 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