pętla $ .each () vs for () - i wydajność
Są to głównie tylko niektóre rzeczy, które zastanawiałem się, może ktoś może dać mi trochę więcej wglądu, podzielę się tym, co zauważyłem do tej pory!
Pierwszą rzeczą, którą zastanawiałem się ... czy jest jakaś różnica lub powód do użycia:
$('element').each(function (i, el) { });
- kontra -
$.each($('element'), function (i, el) { });
Patrząc na dokumenty jQuery, nie widzę żadnego wiersza ani przyczyny dla jednego lub drugiego (może znasz instancję lub dodatkowe rzeczy, które można zrobić nad drugim).
Ale co ważniejsze, jestem zainteresowanyprędkość tutaj
// As opposed to $.each() looping through a jQuery object
// -- 8x faster
for (var i = 0, $('.whatever').length; i < len; i++) {
$('.whatever')[i] // do stuff
}
Jeśli to sprawdziszjsFiddle DEMO tutaj, zobaczysz, że różnica prędkości jest w zasadzie równoważna z każdym z nich, ale co ważniejsze, czuję się tak, jak powinienemzawsze używaćfor()
pętle ...
Właśnie testowałem jednostki (przechodząc przez każdą z 5 różnych funkcji scenariusza, 50 000 razy), po prostu przechodząc przez kilka elementów listy i ustawiającdata-newAttr
, nic specjalnego.
PYTANIE :: Myślę, że moim największym pytaniem jest, dlaczego niezawsze używać pętli podczas iteracji obiektu? Czy jest nawet sens używania $ .each ()? Czy zawsze używasz pętli for () nawet podczas przechodzenia przez obiekty jQuery?
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
Tylko moje 2 centy. :)