Heim >Web-Frontend >js-Tutorial >Warum wird „setTimeout(alertMsg, 3000)' gegenüber „setTimeout('alertMsg()', 3000)' bevorzugt?

Warum wird „setTimeout(alertMsg, 3000)' gegenüber „setTimeout('alertMsg()', 3000)' bevorzugt?

Linda Hamilton
Linda HamiltonOriginal
2024-11-22 08:39:14975Durchsuche

Why is `setTimeout(alertMsg, 3000)` preferred over `setTimeout(

Unterschiede zwischen der Verwendung von setTimeout mit Anführungszeichen und Klammern

Bei Verwendung von setTimeout können Sie die Funktion direkt ohne Anführungszeichen oder Klammern aufrufen oder den Funktionsnamen in Anführungszeichen setzen mit Klammern. Hier ist die Aufschlüsselung:

Mit Klammern:

setTimeout("alertMsg()", 3000);

In diesem Fall wird „alertMsg()“ als Zeichenfolge behandelt und setTimeout führt diese Zeichenfolge als aus ein Skript. Dieser Ansatz wird nicht empfohlen, da er zu unerwartetem Verhalten führen kann.

Ohne Anführungszeichen und Klammern:

setTimeout(alertMsg, 3000);

Dies ist der bevorzugte Weg um eine Funktionsreferenz an setTimeout zu übergeben. Es übergibt direkt alarmMsg, von dem angenommen wird, dass es sich um eine Funktion handelt.

Nur ​​in Anführungszeichen:

setTimeout("alertMsg", 3000);

Dies ist ein Alias ​​für das vorherige Beispiel, aber es ist nicht empfohlen. Dies impliziert, dass Sie eine Zeichenfolge an setTimeout übergeben, was irreführend sein kann.

Zusätzliche Überlegungen zu setTimeout

  • Funktionsreferenz übergeben: Übergeben Sie immer eine Funktion Referenz oder anonyme Funktion als erstes Argument für setTimeout.
  • Argumente übergeben:Zu übergeben Argumente für die Funktion verwenden Sie einen Rückruf oder die weniger browserübergreifende Methode, sie als Argumente für setTimeout einzuschließen.
  • Rückrufkontext: Standardmäßig ist der Kontext des Rückrufs der globale Objektfenster. Sie können es mit bind ändern.
  • Sicherheit: Vermeiden Sie die Übergabe von Zeichenfolgen an setTimeout, da es beliebige Skripte ausführen kann.

Das obige ist der detaillierte Inhalt vonWarum wird „setTimeout(alertMsg, 3000)' gegenüber „setTimeout('alertMsg()', 3000)' bevorzugt?. 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