循环条件缓存数组长度是否会影响性能?

两者之间有很大差异吗?

for (var i = 0, c = data.length; i < c; i++) {

}

for (var i = 0; i < data.length; i++) {

}

有什么不同?


在第一个代码中,数组的length (或类似数组的集合)只计算一次并将其缓存 。 所以,每次迭代都不重新计算长度。

在第二个代码中, 每次迭代计算长度

你可以说缓存长度比重新计算长度稍快。 这种差异非常小,您可以忽略小数组。 但是对于庞大阵列,差异可能很大。

使用哪种方式完全取决于用例。 如果数组长度在循环内更新,则必须使用第二个代码。

for (var i = 0; i < data.length; i++) {
    // Useful when the data length is altered in here
}

每次你计算data.length

for (var i = 0, c = data.length; i < c; i++)  {}
链接地址: http://www.djcxy.com/p/70011.html

上一篇: does caching array length for a loop condition affect performance?

下一篇: Javascript array object arrays