Heim  >  Artikel  >  Web-Frontend  >  Muss der Längenwert in den for loop_javascript-Tipps zwischengespeichert werden?

Muss der Längenwert in den for loop_javascript-Tipps zwischengespeichert werden?

WBOY
WBOYOriginal
2016-05-16 15:48:411986Durchsuche

Ob der Längenwert in der for-Schleife zwischengespeichert werden muss, glaube ich, dass viele Programmierer mit diesem Problem zu kämpfen haben. Die Analyse dieses Problems finden Sie weiter unten:

Bei der JS-Leistungsoptimierung gibt es eine häufige kleine Optimierung, nämlich

// 不缓存 
for (var i = 0; i < arr.length; i++) {
  ...
}

// 缓存
var len = arr.length;
for (var i = 0; i < len; i++) {
  ...
}

Sollten wir also auf diese Schreibweise verzichten? Nein, es gibt eine andere Situation, in der diese Schreibweise verwendet werden muss.

Bitte sehen Sie sich das Beispiel an:

Code kopieren Der Code lautet wie folgt:

var divs = document.getElementsByTagName("div"), i, div ;
for( i=0; i div = document.createElement("div");
​ document.body.appendChild("div");
}

Der obige Code verursacht eine Endlosschleife: Die erste Codezeile ruft die Knotenliste aller div-Elemente ab. Da die Knotenliste dynamisch ist, wird die nächste for-Schleife aktualisiert, solange der Seite ein neues div hinzugefügt wird Die divs.length wird erneut ausgewertet, sodass i und divs.length jedes Mal gleichzeitig erhöht werden. Infolgedessen werden ihre Werte niemals gleich sein, wodurch eine Endlosschleife entsteht.

Wenn Sie also eine Knotenliste iterieren möchten, ist es am besten, die zweite Variable mit dem Längenattribut zu initialisieren und dann den Iterator mit der Variablen zu vergleichen. Der geänderte Code lautet wie folgt:

Code kopieren Der Code lautet wie folgt:

var divs = document.getElementsByTagName("div"), i, div ,len ;
for(i=0;len=divs.length;i div = document.createElement("div");
​document.body.appendChild("div");
}

In diesem Beispiel wird len zu Beginn der Schleife initialisiert, wodurch das Problem der Endlosschleife vermieden wird, das im vorherigen Beispiel aufgetreten ist, wenn eine Schleifeniteration erforderlich ist Knotenliste, Es ist sicherer, diese Methode zu verwenden.

Zusammenfassung:
1. Ob das Zwischenspeichern des Längenwerts für die Leistungsoptimierung von Vorteil ist, muss anhand der spezifischen Situation beurteilt werden. Im Allgemeinen ist die Reduzierung des Zugriffs auf das DOM immer noch vorteilhaft 2. Wenn Sie eine Knotenliste ausführen müssen, wird empfohlen, den Längenwert zwischenzuspeichern, um eine Endlosschleife zu vermeiden.

Der obige Inhalt ist eine vollständige Einführung in die Frage, ob der Längenwert in der for-Schleife zwischengespeichert werden muss. Ich hoffe, er gefällt Ihnen.

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