最佳答案
我总是假设用 JavaScript 缓存数组的长度是一个好主意(特别是在 for
循环的情况下) ,因为计算数组的长度非常昂贵。
for (var i = 0; i < arr.length; i++) { }
// vs
for (var i = 0, arrLength = arr.length; i < arrLength; i++) { }
但是,我认为可能 length
属性只在创建和更改数组时更新。因此,与读取存储在变量中的数据相比,读取数据不应该太昂贵(其他语言中的方法可能需要在内存中查找某些数据的结尾,例如 C 语言中的 strlen()
)。
我有两个问题。我也很感兴趣这是如何工作的,所以请不要打我与 过早的优化棒。
假设浏览器中有 JavaScript 引擎。
length
属性有什么好处吗?在读取对象属性的局部变量时是否涉及更多内容?length
属性在创建时以及在 shift()
和 pop()
类型方法不返回新数组或仅仅存储为整数时是否发生了改变?