【问题标题】:does caching array length for a loop condition affect performance?循环条件的缓存数组长度会影响性能吗?
【发布时间】:2015-12-31 17:00:24
【问题描述】:

区别大吗

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

}

还有

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

}

有什么区别?

【问题讨论】:

标签: javascript jquery


【解决方案1】:

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

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

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

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

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

【讨论】:

    【解决方案2】:

    每次你计算data.length in

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-13
      • 2010-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-23
      相关资源
      最近更新 更多