我不明白为什么会这样。
我在这里读到:
第一个$.each构成了启动迭代器的单个函数调用。
第二个$(foo.vals).each进行三个函数调用来启动迭代器。
- 第一个是 $() ,它产生一个新的 jQuery 包装器集(不确定在此过程中进行了多少其他函数调用)。
- 然后调用 $().each。
- 最后,它对 jQuery.each 进行内部调用以启动迭代器。
在您的示例中,至少可以说差异可以忽略不计。但是,在嵌套使用场景中,您可能会发现性能成为一个问题。
最后,jQuery Enlightenment 中的 Cody Lindley 不建议将 $.each 用于大于 1000 的迭代,因为涉及到函数调用。使用普通的 for( var i = 0... 循环。
所以我用这个 jsperf 测试了它:
(任务:找到选中复选框的Tr,并为该tr着色。)
这是jsbin
但是看看jsperf
出乎所有人的意料,事实恰恰相反。(铬和FF和IE)
使用$().each
( 调用三种方法的人是最快的等等..
这里发生了什么?