gpt4 book ai didi

javascript - 速度测试: while() cycle vs. jQuery的each()函数

转载 作者:行者123 更新时间:2023-11-28 16:26:42 25 4
gpt4 key购买 nike

我有一个名为 targets 的对象数组,我想对每个对象执行一个函数。第一种方法:

targets.each(function() {
if (needScrollbars($(this))) {
wrap($(this), id);
id = id + 1;
}
});

此方法的执行速度约为 125 毫秒。第二种方法是:

var i=0;
while (targets[i] != undefined) {
if (needScrollbars($(this))) {
wrap($(this), id);
id = id + 1;
}
i = i+1;
}

第二种方法的执行时间高达 1385 毫秒,我已经明白了。有谁知道为什么一个简单的循环比一个函数运行得慢,我只是猜测它所做的(只是猜测)比一个简单的循环要多得多?

谢谢。

最佳答案

他们是完全不同的。第一个示例中的 this 是当前的目标,第二个示例中的 this 是“外部”this 。您应该将第二个示例更改为:

var i=0;
while (targets[i] != undefined) {
var cur = $(targets[i]);
if (needScrollbars(cur)) {
wrap(cur, id);
id = id + 1;
}
i = i+1;
}

相关quote

More importantly, the callback is fired in the context of the current DOM element, so the keyword this refers to the element.

但我不知道你为什么没有写成:

for (var i = 0; i < targets.length; i++)
{
var cur = $(targets[i]);
if (needScrollbars(cur)) {
wrap(cur, id);
id = id + 1;
}
}

最后,每个“方法”都更容易理解(对我来说)。

关于javascript - 速度测试: while() cycle vs. jQuery的each()函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7776920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com