在Javascript中预定义数组长度

时间:2013-08-02 03:37:50

标签: javascript arrays optimization

在将项目推送到该数组时,是否会提升预定义Javascript数组长度的性能?

例如,假设你这样做:

var item1 = "apple",
    item2 = "orange",
    item3 = "sports car"; // Because I said so, that's why.

var myArray = [];  // Empty array with initial length of 0

myArray.push(item1);
console.log(myArray.length) // 1

myArray.push(item2);
console.log(myArray.length) // 2

myArray.push(item3);
console.log(myArray.length) // 3

在上面的代码中,每次推送都会重新计算myArray的长度。可替换地;

var item1 = "apple",
item2 = "orange",
item3 = "sports car";

var myArray = Array(3) // Assume we already know exactly how many items will be added
myArray[0] = item1;
console.log(myArray.length) // 3

myArray[1] = item2;
console.log(myArray.length) // 3

myArray[2] = item3;
console.log(myArray.length) // 3

我的问题是,当您明确地为数组中的预先存在的插槽分配值时,仍然会重新评估该数组的length属性。如果不是,那么回避该过程会产生更快的阵列数量吗?

不言而喻,这不仅仅是一个理论上的练习,而是一个真实的现实问题。

1 个答案:

答案 0 :(得分:1)

根据this JSPerf,预定义的长度 更快,相当多。

应该注意new Array()语法并不是最佳实践。如果您绝对需要来挤压每一个性能,请考虑这一点。否则,让您和所有触摸代码的开发人员都能轻松过关,使用[]