$ .each () против цикла for () - и производительность
В основном это просто некоторые вещи, которые мне интересны, может быть, кто-то может дать мне немного больше понимания о них, я поделюсь тем, что я заметил до сих пор!
Первое, что мне было интересно ... есть ли какая-либо разница или причина для использования:
$('element').each(function (i, el) { });
-- против --
$.each($('element'), function (i, el) { });
Глядя на документы jQuery, я не вижу никакой рифмы или причины того или другого (может быть, вы знаете экземпляр или дополнительные действия, которые можно сделать над другим).
But more importantly I'm concerned with speed here
// As opposed to $.each() looping through a jQuery object
// -- 8x faster
for (var i = 0, $('.whatever').length; i < len; i++) {
$('.whatever')[i] // do stuff
}
Если вы проверите этоJSFiddle ДЕМО здесьвы увидите, что разница в скорости в основном эквивалентна любому из них, но что более важно, я чувствую, что долженalways использоватьfor()
петли ...
Я просто занимался модульным тестированием (циклически просматривая каждую из 5 различных функций сценария, 50000 раз), просто циклически просматривая группу элементов списка и устанавливаяdata-newAttr
, ничего особенного.
QUESTION :: I guess my biggest question is, why not always use for loops while iterating through an object?? Is there even a point to using $.each()? Do you always use for() loops even when going through jQuery objects?
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
Просто мои 2цента. :)