Heim >Web-Frontend >js-Tutorial >Vergleich verschiedener Verwendungen von for-Schleifen in Javascript und wie man die Leistung verbessern kann
Die for-Schleife ist nützlich, wenn wir Objekte oder Arrays in js durchlaufen. Schauen wir uns einige Anwendungsbeispiele der for-Schleife an. Die spezifischen Operationsdetails werden unten vorgestellt.
wird im Allgemeinen wie folgt geschrieben:
for(var i = 0;i< arr.length;i++) { var a = arr[i]; //... }
Dies ist eine übliche, positive Sequenz für eine Schleife. Jeder kennt die Nachteile dieser Schreibweise: Die Länge von arr zu nehmen und sie jedes Mal mit i zu vergleichen, ist eine Leistungsverschwendung (und wenn sich die Länge von arr dynamisch ändert, entsteht eine Endlosschleife). Die Möglichkeit, diese Schleife zu verbessern, besteht darin, Variablen zum Speichern zu verwenden: arr.length
for(var i = 0, al = arr.length;i< al;i++) { var a = arr[i]; //... }Dies kann die Leistung im Vergleich zur ersten Methode leicht verbessern. Dieses Schreiben fügt jedoch eine zusätzliche Variable al hinzu, und diese Variable ist nur nützlich, wenn sie mit i verglichen wird, was etwas nutzlos erscheint.
Wenn Ihnen die Schleifenreihenfolge nicht wichtig ist, können Sie versuchen, die Schleife in umgekehrter Reihenfolge durchzuführen:
for(var i = arr.length-1;i > -1;i--) { var a = arr[i]; //... }Auf diese Weise gibt es weniger Variablen und die Arr-Länge wird zwischengespeichert. Die Leistung ist ebenfalls gut. Aber der Code hier ist etwas schlecht geschrieben (ich habe es absichtlich gemacht), erstens
(er will tatsächlich -1, verdammt) und dann die Bedingung i > -1, damit die Schleife weiter ausgeführt wird, was unerträglich ist für Menschen mit Mysophobie. i = arr.length-1
Das Folgende ist meine häufig verwendete umgekehrte Reihenfolge für die Methode zum Schreiben von Schleifen:
for(var i = arr.length;i--;) { var a = arr[i]; //... }Dies ist bereits sehr rationalisiert. Das Prinzip muss verstanden werden: Die Bedingung für die weitere Ausführung der for-Schleife ist, dass sich die Beurteilung zwischen; immer noch 1, aber nach dem Eintritt in den Schleifenkörper ist er 0, sodass die letzte Schleife normal ausgeführt werden kann. Wenn i = 0 ist, ist i– immer noch 0 und 0 ist nicht mehr wahr, sodass die Schleife nicht weiter ausgeführt wird .
i=arr.length
Jedem ist aufgefallen, dass es im for-Schleifenkörper aller oben genannten Codes ein
var a = arr[i]
lautet wie folgt:
Der Vorteil dieser Schreibweise besteht darin, dass es fast unvermeidlich ist, dassfor(var i = 0, a;a = arr[i++];) { //... }verschwindet, und der oben erwähnte Satz über das Herausnehmen des Das Array-Element, zu dem derzeit eine Schleife ausgeführt wird, fehlt ebenfalls.
arr.length
wird als Bedingung für die Ausführung der Schleife verwendet, es ist also keins Urteilssatz, sondern eine Zuweisungsanweisung. Weisen Sie einfach
a zu und bestimmen Sie dann, ob a ein wahrer Wert ist. Ich werde nicht auf die Haupttypen von i++ und i– eingehen. Ich sage nur, dass die Schleife anhalten muss, wenn i++ die Länge des Arrays überschreitet, und sie stoppt hier wirklich. Denn a = arr[i++]
: Wenn Sie ein Element erhalten, das die Länge des Arrays selbst überschreitet, erhalten Sie nur einen undefinierten Wert, und undefiniert ist ein falscher Wert, und die Schleifenbedingung schlägt fehl. arr[i++]
a=arr[i++]
1. Wenn sich die Länge von arr dynamisch ändert, entsteht immer noch eine Endlosschleife ———— Weil wir arr.length nie zwischengespeichert haben.
2. Wenn die Schleife ein Zahlenarray ist und das herausgenommene Element (d. h. der Wert von a) 0 ist, wird die Schleife beendet (da 0 ein falscher Wert ist). .
3. Wenn ein Element im Array ein falscher Wert ist (einschließlich leerer Zeichenfolge, 0, null, undefiniert), wird die Schleife ebenfalls beendet
, sodass jeder diese Methode verwendet Es ist am besten, die oben genannte Situation auszuschließen, bevor Sie sie verwenden.
Dieses Prinzip kann auch in umgekehrten Schleifen verwendet werden.
Abschließende Ratschläge:
1. Pause zum richtigen Zeitpunkt! Kein Durchqueren erforderlich. Alle müssen Fluchtbedingungen hinzufügen!
2. Deklarieren Sie keine Variablen im for-Schleifenkörper (es wird empfohlen, var einmal und mehrfach zuzuweisen)
2. Speichern Sie die Array-Länge im Cache und verwenden Sie sie als möglichst wenige Variablen
Das obige ist der detaillierte Inhalt vonVergleich verschiedener Verwendungen von for-Schleifen in Javascript und wie man die Leistung verbessern kann. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!