$ .each () vs for () Schleife - und Leistung
Dies sind hauptsächlich einige Dinge, die ich mich gefragt habe. Vielleicht kann mir jemand einen Einblick in sie geben. Ich werde auch mitteilen, was mir bisher aufgefallen ist.
Das erste, was ich mich gefragt habe ... gibt es einen Unterschied, der gut oder schlecht ist:
$('element').each(function (i, el) { });
-- gegen --
$.each($('element'), function (i, el) { });
Wenn ich mir die jQuery-Dokumente ansehe, sehe ich keinen Reim oder Grund für den einen oder anderen (vielleicht kennst du eine Instanz oder zusätzliche Dinge, die man über die andere machen kann).
Aber was noch wichtiger ist, ich bin besorgtGeschwindigkeit Hier
// As opposed to $.each() looping through a jQuery object
// -- 8x faster
for (var i = 0, $('.whatever').length; i < len; i++) {
$('.whatever')[i] // do stuff
}
Wenn Sie dies überprüfenjsFiddle DEMO hierSie werden sehen, dass der Geschwindigkeitsunterschied bei beiden im Grunde genommen gleich ist, aber was noch wichtiger ist, ich fühle, wie ich sollteimmer verwendenfor()
Schleifen ...
Ich habe nur Unit-Tests durchgeführt (5 verschiedene Szenariofunktionen wurden 50.000 Mal durchlaufen), einfach eine Reihe von Listenelementen durchlaufen und ein gesetztdata-newAttr
, nichts Besonderes.
FRAGE: Ich denke, meine größte Frage ist, warum nichtimmer Verwenden Sie für Schleifen beim Durchlaufen eines Objekts? Gibt es überhaupt einen Punkt für die Verwendung von $ .each ()? Verwenden Sie immer for () - Schleifen, auch wenn Sie jQuery-Objekte durchlaufen?
Function type: Execution Time:
_testArea.each() + $(this) 1947 <-- using $(this) slows it down tremendously
$.each() + $(this) 1940
_testArea.each() + el(plain JS) 458 <-- using the Element speeds things up
$.each() + el(plain JS) 452
for() loop + plainJS[0] iteration 236 <-- over 8x faster
Nur meine 2 Cent. :)