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

2022-08-30 00:08:21

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

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

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

其他人说编译器会对此进行一些优化,因此您可以编写:

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

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


答案 1

使用大多数现代浏览器执行此测试后:https://jsben.ch/wY5fo

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

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

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

我会说,这绝对是我为JavaScript引擎开发人员鼓掌的一个例子。运行时应该针对清晰度进行优化,而不是为了聪明。


答案 2

循环访问 javascript 数组的绝对最快的方法是:

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

请参阅此帖子以获取完整比较