在使用push的时候,每次JS需要先找到当前索引的最大值,再在此基础上生成新的索引值,然后对新的索引值进行赋值。而[i]则是直接对相应的索引赋值。
// 空数组模式
var start = new Date().getTime()
var array = []
for (let i=0; i<10000000; i++) {
array.push(i)
}
var end = new Date().getTime()
var cost = end - start
console.log('cost:', cost) // cost: 139
// 指定长度数组模式
var start = new Date().getTime()
var array = Array(10000000)
for (let i=0; i<10000000; i++) {
array[i] = i
}
var end = new Date().getTime()
var cost = end - start
console.log('cost:', cost) // cost: 45
因此,对与JS的数组来讲,当操作大批量的元素的时候,直接根据下标操作,反而要比经过各种常见的迭代方法要快。