这些主要只是我一直想知道的一些事情,也许有人可以给我更多的见解,我也会分享我到目前为止所注意到的!
我一直想知道的第一件事......有什么好的或理由使用的区别:
$('element').each(function (i, el) { });
- 相对 -
$.each($('element'), function (i, el) { });
查看 jQuery 文档,我看不出其中一个有任何押韵或原因(也许你知道一个实例或一个可以做的其他事情。
但更重要的是我关心这里的速度
// 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 DEMO,你会发现速度上的差异基本上与它们中的任何一个相同,但更重要的是我觉得我应该总是使用for()
循环......
我只是进行单元测试(循环遍历 5 个不同的场景函数中的每一个,50,000 次),简单地遍历一堆列表项,并设置 a data-newAttr
,没什么特别的。
问题 :: 我想我最大的问题是,为什么在遍历对象时不总是使用 for 循环?使用 $.each() 有什么意义吗?即使在浏览 jQuery 对象时,您是否总是使用 for() 循环?
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美分。:)