Heim  >  Artikel  >  Web-Frontend  >  Können stringbasierte Funktionsaufrufe mit setTimeout gerechtfertigt werden?

Können stringbasierte Funktionsaufrufe mit setTimeout gerechtfertigt werden?

DDD
DDDOriginal
2024-10-20 07:42:02783Durchsuche

Can String-Based Function Calls with setTimeout Be Justified?

Übergabe eines Strings an setTimeout: Gründe für die Vermeidung und die Ausnahme

Das Übergeben eines Strings an setTimeout oder sein setInterval-Gegenstück ist bei Devido im Allgemeinen verpönt Bedenken hinsichtlich der Ausführung im globalen Bereich, potenzieller Leistungsprobleme und Sicherheitslücken. Die empfohlene Alternative besteht darin, eine anonyme Funktion als erstes Argument zu verwenden.

In bestimmten Situationen kann es jedoch eine Rettung geben. Wenn der Programmierer beabsichtigt, auf eine Funktion oder Variable zuzugreifen, die im globalen Bereich vorhanden ist, aber lokal überschrieben wurde, kann er die Verwendung der veralteten Zeichenfolgensyntax in Betracht ziehen. Dennoch gilt dieser Ansatz aufgrund der Möglichkeit des Variablenschattens als schlechte Programmierpraxis.

In den meisten Fällen ist es möglich, auf globale Variablen als Eigenschaften des Fensterobjekts (z. B. window.globalVar) zuzugreifen und es so zu erstellen Es ist unnötig, auf stringbasierte Funktionsaufrufe zurückzugreifen. Daher ist es höchst unwahrscheinlich, dass ein Szenario auftritt, in dem die Verwendung einer Zeichenfolge als erstes Argument für setTimeout oder setInterval wirklich von Vorteil wäre.

Historisch gesehen ergab sich die alleinige Verfügbarkeit einer Codezeichenfolge als Argument für diese Funktionen Einschränkungen von JavaScript 1.0. Die Einführung einer Funktionsobjektreferenz als Argument erfolgte erst mit JavaScript 1.2. Die Wahrung der Kompatibilität mit älteren Browsern und Skripten verhindert, dass Entwickler stringbasierte Aufrufe vollständig eliminieren. Wenn Programmierer sowohl die Vorbehalte als auch die seltenen Ausnahmen verstehen, können sie beim Schreiben von Code mit setTimeout und setInterval fundierte Entscheidungen treffen.

Das obige ist der detaillierte Inhalt vonKönnen stringbasierte Funktionsaufrufe mit setTimeout gerechtfertigt werden?. 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