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

时间:2015-10-03 16:31:50

标签: javascript jquery

之间是否存在很大差异?
for (var i = 0, c = data.length; i < c; i++) {

}

并且

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

}

有什么区别?

2 个答案:

答案 0 :(得分:2)

在第一个代码中,数组的length(或类似数组集合)仅计算一次并且缓存< / strong>即可。因此,每次迭代都不会重新计算长度。

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

您可以说缓存长度稍微比重新计算长度更快。对于较小的阵列,您可以忽略这一差异。但对于巨大的阵列,差异可能很大。

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

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

答案 1 :(得分:1)

每次在

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