Я не понимаю, почему это происходит.
Я прочитал здесь, что:
Первый $. каждый представляет собой одиночный вызов функции для запуска итератор.
Второй $(foo.vals).each выполняет вызовы функций три, чтобы запустить итератор.
- Первый - это $(), который создает новую обертку jQuery set (Не знаете, сколько других вызовов функций выполняется во время этого обработать).
- Затем вызов в $().
- И, наконец, он делает внутреннюю вызовите jQuery.each для запуска итератора.
В вашем примере разница будет ничтожно мала. Однако в сценарии вложенного использования вы можете обнаружить, что производительность становится проблема.
Наконец, Коди Линдли в jQuery Enlightenment не рекомендует использовать $.each для итераций, превышающих 1000 из-за вызовов функций участвует. Используйте обычный для (var я = 0... цикл.
Итак, я протестировал его с помощью этого jsperf:
(задача: найти Tr, который установил флажок внутри них и цвет, который tr.)
Это jsbin
Но посмотрите jsperf
против всех ожиданий, напротив - это истина. (хром, FF и IE)
Тот, кто использует $().each
(который вызывает три метода, является самым быстрым
и т.д.
Что здесь происходит?