Puh! Das war ein langer Titel.For-Loop-Einstellung Länge Variable beim Konvertieren von Nodelist
lese ich WROX‘Buch über Professional JavaScript für Web-Entwickler und ich kam in diesem Beispielcode, und ich habe mich nur gefragt, ob das beste Praxis war:
function convertToArray(nodes) {
array = new Array();
for (var i=0, len=nodes.length; i < len; i++) {
array.push(nodes[i]);
}
return array;
}
Das Ding, das habe hat mich mein Kratzen Kopf ist die "len = nodes.length". Habe ich falsch gedacht, dass der erste Satz in einer For-Schleife nur einmal ausgeführt wird? Gibt es einen Grund, warum Sie eine Variable (len) auf die Länge der nodeList setzen möchten, bevor Sie sie durchlaufen? Würdest du das auch mit einem normalen Array machen?
Danke
sarnath'd - well put sir – annakata
Dies kann noch weiter optimiert werden, indem "array = []" durch "array = new Array (nodes.length)" ersetzt wird. Auf diese Weise muss das Array nicht ständig wachsen (was zu Speicherzuweisungen führt). –
@Vilx: Ich denke du hast Recht; Beachten Sie jedoch, dass das Analysieren des Array-Literals schneller ist als das Aufrufen des Konstruktors, und solange "node.length" nicht "zu groß" ist, wird die erste Zuweisung weiterhin ein dichtes Array erstellen (die meisten JS-Engines unterscheiden zwischen dicht und dünn) Arrays), also könnte es stattdessen einen Performance-Hit geben ... – Christoph