2

将项目推入该数组时,预定义 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

我的问题是,当您明确地将值分配给数组中的预先存在的插槽时,该数组的长度属性仍然会重新评估。如果没有,是否回避该过程会产生更快的阵列填充?

不用说,这更像是一个理论练习,而不是一个实际的现实问题。

4

1 回答 1

1

根据这个 JSPerf,预定义长度快很多。

应该注意的是,new Array()语法并不完全被认为是最佳实践。如果您绝对需要压缩最后一点性能,请考虑这一点。否则,让您和所有接触您的代码的开发人员的生活变得轻松,使用[].

于 2014-02-01T00:48:17.237 回答