Ist das Lesen der `length` - Eigenschaft ein array wirklich so teuer eine operation in JavaScript?

Ich immer davon ausgegangen, das Zwischenspeichern der Länge eines array in JavaScript ist eine gute Idee (vor allem im Zustand eines for - Schleife) wegen der Kostspieligkeit der Berechnung der Länge eines Arrays.

Beispiel

for (var i = 0; i < arr.length; i++) { }

//vs

for (var i = 0, arrLength = arr.length; i < arrLength; i++) { }

Aber ich dachte, vielleicht ist die length Eigenschaft wird nur aktualisiert, auf die Bildung und die änderung des Arrays. Daher Lesen es sollte nicht zu teuer sein, eine operation im Gegensatz zu Lesen Sie es in einer Variablen gespeichert (im Gegensatz zu anderen Methoden, die in anderen Sprachen benötigen, um im Speicher zu finden, das Ende von etwas, z.B. strlen() in C).

Habe ich zwei Fragen. Ich bin auch daran interessiert, wie das funktioniert, also bitte nicht schlagen Sie mich mit der vorzeitige Optimierung stick.

Übernehmen die JavaScript-engines in den Browsern.

  1. Ist es von Vorteil, um die Zwischenspeicherung der length - Eigenschaft ein array in JavaScript? Ist dort viel stärker eingebunden in das Lesen einer lokalen Variablen über eine Objekt-Eigenschaft?
  2. Ist die length Eigenschaft einfach verändert, die auf die Bildung und auf shift() und pop() Art Methoden, die nicht zurückkehren, ein neues array und sonst einfach als Ganzzahl gespeichert?
InformationsquelleAutor alex | 2011-04-22
Schreibe einen Kommentar