【发布时间】:2012-08-06 22:00:03
【问题描述】:
这些主要只是我一直想知道的一些事情,也许有人可以给我更多的见解,我也会分享我到目前为止所注意到的!
我一直想知道的第一件事......有什么好的或理由使用的区别:
$('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 here,您会发现速度差异基本上与它们中的任何一个相同,但更重要的是我觉得我应该始终 正在使用for() 循环...
我只是进行单元测试(循环遍历 5 个不同的场景函数中的每一个,50,000 次),简单地遍历一堆列表项,并设置一个 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 美分。 :)
【问题讨论】:
-
正如乔·阿姆斯特朗在回答 Erlang 邮件列表上的一个类似问题时所写的那样,“只写你能写的最漂亮的程序。”让性能问题来找你。你真的会处理迭代 50,000 次的页面吗?如果是,那么一定要优化。
-
for循环遍历 jQuery DOM 元素会是什么样子? -
在 jsperf.com 上自己测试一下
-
总是,Javascript 函数会比 Jquery 函数更快,因为 javascript 是本机的,但我认为使用 each 而不是 for 的意义在于,它使用框架使代码更快,以及优势
-
.each()方法迭代 jQuery 对象。$.each()静态方法可以迭代各种类型的对象,如普通对象、数组和类数组对象。这就是区别。
标签: javascript jquery