6

我非常喜欢在 nodeLists 上使用 forEach 方法,如下所示:

var nodes = document.querySelectorAll(".foo");

[].forEach.call(nodes, function (item) {
    //do stuff with item
});

不过我想知道,这样做会比常规方式花费更长的时间吗?例如

for(var i=0;i<nodes.length;i++){
    //do stuff with nodes[i];
}
4

3 回答 3

7

这是一个很好的性能比较。根据它Array.forEach比本机for循环慢。

于 2010-02-23T10:49:28.600 回答
4

我知道这是一篇旧文章,但使用 forEach 方法也可以通过窃取 Array 原型来完成。

NodeList.prototype.forEach = Array.prototype.forEach;
于 2012-12-13T13:02:00.653 回答
1

这取决于浏览器。并且不要忘记在 Firefox 4 上最快的 while()。这是一个比较

另外请记住,如果您支持不支持 forEach 的旧浏览器,则需要添加实现 polyfill所需的时间。

于 2011-04-13T13:27:18.217 回答