Heim  >  Artikel  >  Web-Frontend  >  Detaillierte Erläuterung des Unterschieds zwischen Javascript-Array-Traversal für und für in_javascript-Fähigkeiten

Detaillierte Erläuterung des Unterschieds zwischen Javascript-Array-Traversal für und für in_javascript-Fähigkeiten

WBOY
WBOYOriginal
2016-05-16 16:29:181476Durchsuche

Es gibt zwei Möglichkeiten, Arrays in js zu durchlaufen

Code kopieren Der Code lautet wie folgt:

var array=['a']
//Standard für Schleife
for(var i=1;i alarm(array[i])
}
//foreach-Schleife
for(var i im Array){
alarm(array[i])
}

Unter normalen Umständen sind die Ergebnisse der beiden oben genannten Methoden zum Durchlaufen von Arrays gleich. Lassen Sie uns zunächst über den ersten Unterschied zwischen den beiden sprechen

Das i in der Standard-for-Schleife ist vom Typ Zahl, was den Index des Arrays darstellt, aber das i in der foreach-Schleife stellt dar, dass der Schlüssel des Arrays vom Typ string ist, da alles in js ein Objekt ist. Probieren Sie es selbst aus. Alert(typeof i); Dieser Unterschied ist ein kleines Problem. Nachdem ich nun den folgenden Code hinzufüge, wird das obige Ausführungsergebnis anders sein.

Code kopieren Der Code lautet wie folgt:

//Erweitertes natives js-Array
Array.prototype.test=function()

}

Probieren Sie es aus und sehen Sie, was der obige Code bewirkt. Wir haben herausgefunden, dass die standardmäßige for-Schleife immer noch eine Schleife über das Array durchführt, aber zu diesem Zeitpunkt gibt die foreach-Schleife die Testmethode aus, die ich gerade geschrieben habe. Dies ist der größte Unterschied zwischen for und foreach zum Durchlaufen des Arrays. Wenn wir foreach zum Durchlaufen des Arrays im Projekt verwenden, nehmen wir an, dass eines Tages jemand versehentlich die native Array-Klasse von js erweitert oder ein externes js-Framework einführt und auch das native erweitert Array. Dann kommt das Problem.

Zwei weitere Vorschläge

1. Verwenden Sie nicht for in, um das Array zu durchlaufen, sondern das Standard-for-Schleifenvariablen-Array (wir können nicht garantieren, ob die von uns eingeführten js Prototypen verwenden, um das native Array zu erweitern)
2. Wenn Sie die nativen Klassen von js erweitern möchten, verwenden Sie nicht den Prototyp

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