我有一个名为targets
的对象数组,我想对这些对象中的每一个执行一个函数。第一种方法:速度测试:while()循环与jQuery的each()函数
targets.each(function() {
if (needScrollbars($(this))) {
wrap($(this), id);
id = id + 1;
}
});
该方法的执行速度为〜125ms。第二种方法是:
var i=0;
while (targets[i] != undefined) {
if (needScrollbars($(this))) {
wrap($(this), id);
id = id + 1;
}
i = i+1;
}
这第二种方法需要高达1385ms执行,我得到我的头。有没有人知道为什么一个简单的骨骼循环运行速度慢于我只能猜测这只是一个简单的循环而已(只是猜测)的函数呢?
谢谢。
请创建一个http://jsperf.com/test。 –
1)错误'this'值得到'window',2)使用'!='而不是'!=='导致类型强制并降低性能 – Zirak
我做了一些更正并试图做出jsperf.com测试,但我有一些奇怪的错误。菲利克斯克林,你可以看看吗? http://jsperf.com/while-cycle-vs-each –