[].forEach.call(...? 的速度
我非常喜欢在 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];
}
I'm a big fan of using the forEach method on nodeLists like this:
var nodes = document.querySelectorAll(".foo");
[].forEach.call(nodes, function (item) {
//do stuff with item
});
I was wondering though, does doing it that way take longer than the regular way?
e.g.
for(var i=0;i<nodes.length;i++){
//do stuff with nodes[i];
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这是不错的性能比较。根据它,
Array.forEach
比原生for
循环慢。Here's a nice performance comparison. According to it
Array.forEach
is slower than a nativefor
loop.我知道这是一篇旧文章,但使用 forEach 方法也可以通过窃取数组原型来完成。
I know it's an old post but using the forEach method can be done by stealing the Array prototype as well.
这取决于浏览器。不要忘记 while(),它是 Firefox 4 上最快的。 这里有一个比较。
另请记住,如果您支持不支持 forEach 的旧版浏览器,则需要添加 实现一个polyfill。
It depends on the browser. And don't forget about while() which is the fastest on Firefox 4. Here's a comparison.
Also keep in mind that if you're supporting older browsers that don't support forEach, you need to add in the time it takes to implement a polyfill.