我不明白为什么会发生这种情况。
I read here那 :
首先$.each构成一个single函数调用来启动
迭代器。
第二$(foo.vals).each makes three函数调用来启动
迭代器。
- 第一个是 $() ,它生成一个新的 jQuery 包装器
设置(不确定在此期间进行了多少次其他函数调用)
过程)。
- 然后调用$().each。
- 最后它使内部
调用 jQuery.each 来启动迭代器。
在您的示例中,至少可以说差异可以忽略不计。
但是,在嵌套使用场景中,您可能会发现性能变得
一个问题。
最后,jQuery Enlightenment 中的 Cody Lindley 不建议使用
$.each 用于由于函数调用而导致迭代次数大于 1000
涉及。使用普通的 for( var i = 0... 循环。
所以我用这个 jsperf 测试了它:
(任务:找到已选中其中复选框的 Tr,并为该 tr 着色。)
这是jsbin
但看看jsperf
出乎所有人的意料,opposite是真的。 (chrome、FF 和 IE)
那个用的人$().each
(其中调用三个方法是最快的
等等..
这里发生了什么?
您的测试过于繁重,无法真正确定三个循环选项之间的实际差异。
如果您想测试循环,那么您需要尽力从测试中删除尽可能多的不相关工作。
目前,您的测试包括:
与循环本身相比,所有这些都是相当昂贵的操作。当删除额外的东西时,循环之间的差异更加明显。
http://jsperf.com/asdasda223/4
在 Firefox 和 Chrome 中,for
循环比其他循环快 100 倍以上。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)