好吧,我本来会说这很昂贵,但是后来我在jsperf.com上写了一个小测试,令我惊讶的
i<array.length是,在Chrome中使用它的速度实际上更快,而在FF(4)中则没关系。
我怀疑长度存储为整数(Uint32)。根据ECMA规范(第262版,第5页,第121页):
每个Array对象都有一个length属性,该属性的值始终是小于2
32的非负整数。length属性的值在数值上大于名称为数组索引的每个属性的名称;每当创建或更改Array对象的属性时,都会根据需要调整其他属性以保持该不变性。具体地说,每当添加一个名称为数组索引的属性时,如果需要,将length属性更改为比该数组索引的数值大一的值;并且只要更改length属性,就会自动删除名称为数组索引且其值不小于新长度的每个属性。此约束仅适用于Array对象自身的属性,不受长度或数组索引属性(可能从其原型继承的属性)的影响
!我不知道我是否习惯过这种语言…
最后,我们总是有落后的浏览器。在IE(9,8,7)中,缓存的长度确实更快。我说,不使用IE的更多原因之一。



