Javascript []forEach.调用的速度(。。。?

Javascript []forEach.调用的速度(。。。?,javascript,foreach,call,nodelist,Javascript,Foreach,Call,Nodelist,我非常喜欢在节点列表上使用forEach方法,如下所示: var nodes = document.querySelectorAll(".foo"); [].forEach.call(nodes, function (item) { //do stuff with item }); 但是我想知道,这样做会比常规方法花费更长的时间吗? e、 g for(var i=0;i根据它的数组,这里有一个。forEach比原生for循环慢。这取决于浏览器。别忘了while(),它是Firefox

我非常喜欢在节点列表上使用forEach方法,如下所示:

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

[].forEach.call(nodes, function (item) {
    //do stuff with item
});
但是我想知道,这样做会比常规方法花费更长的时间吗? e、 g


for(var i=0;i根据它的
数组,这里有一个。forEach
比原生
for
循环慢。

这取决于浏览器。别忘了while(),它是Firefox 4上最快的


还请记住,如果您支持的是不支持forEach的旧浏览器,则需要增加所需时间。

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

NodeList.prototype.forEach = Array.prototype.forEach;

干杯,谢谢你的链接。这正是我想要的。顺便说一句,jQuery。每种速度都有点令人惊讶。顺便说一句(var I=0,el;el=nodes[I];I++)
也适用:)您是否有要解决的特定性能问题?否则,您可能需要避免过早优化哪种情况。+1执行此操作一次,然后使用someNodeList.forEach()看起来比对每个循环使用.call()或使用巨型ES3样式的“for”loops要整洁得多,但这表明“forEach函数能否成功应用于主机对象[如NodeList]取决于实现。“据我所知,Chrome和Firefox在主机对象上支持forEach。我不知道IE、Safari、Opera等。这取决于实现,但这对已经实现的浏览器上的实现没有任何影响(我还没有找到任何,不过我会尝试Chrome。)
NodeList.prototype.forEach = Array.prototype.forEach;