在 JavaScript 中循环遍历数组的最快方法是什么?

新手上路,请多包涵

我从书上了解到,你应该这样写 for 循环:

for(var i=0, len=arr.length; i < len; i++){
    // blah blah
}

所以不会每次都计算 arr.length

其他人说编译器会对此做一些优化,所以你可以写:

for(var i=0; i < arr.length; i++){
    // blah blah
}

我只想知道哪种方法在实践中是最好的?

原文由 wong2 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

使用大多数现代浏览器执行此测试后:

https://jsben.ch/wY5fo

目前,最快的循环形式(在我看来也是语法上最明显的)。

具有长度缓存的标准 for 循环

 var i = 0, len = myArray.length;
 while (i < len) {
 // your code
 i++
 }

我想说,这绝对是我为 JavaScript 引擎开发人员鼓掌的一个案例。运行时应该优化 _清晰,而不是聪明_。

原文由 jondavidjohn 发布,翻译遵循 CC BY-SA 4.0 许可协议

遍历 javascript 数组的绝对最快的方法是:

 var len = arr.length;
while (len--) {
    // blah blah
}

请参阅 这篇文章 进行全面比较

原文由 gnur 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题