我想在javascript中创建一个数组并记住两种方法,所以我只想知道基本差异是什么,以及这两个“ styles ”中是否存在性能差异< / p>
var array_1 = new Array("fee","fie","foo","fum");
var array_2 = ['a','b','c'];
for (let i=0; i<array_1.length; i++){
console.log(array_1[i])
}
for (let i=0; i<array_2.length; i++){
console.log(array_2[i])
}
答案 0 :(得分:43)
他们做同样的事情。 []
表示法的优点是:
Array
符号,它仍然有用。new Array(3)
时,如果您习惯于查看构造函数中列出的条目,则很容易误读为[3]
,实际上它创建了一个length
为3且没有条目的新数组。new Array
时,解释器必须查找Array
符号,这意味着遍历作用域链中的所有条目,直到它到达全局对象并找到它,而使用[]
则不需要这样做。在正常使用情况下具有任何有形现实世界影响的几率很低。尽管如此...... 因此有几个很好的理由可以使用[]
。
new Array
的优势:
var a = new Array(3);
我几年没有任何理由这样做(不是因为学习了arrays aren't really arrays并且试图预先分配它们没有意义)。如果你真的想,你可以随时这样做:
var a = [];
a.length = 3;
答案 1 :(得分:4)
您的使用没有区别。
唯一真正的用法区别是将整数参数传递给new Array()
,这将设置一个初始数组长度(使用[]
数组 - 文字表示法无法做到这一点)。但是它们在您的用例中以任何一种方式创建相同的对象。
答案 2 :(得分:3)
这个benchmark on JSPerf显示数组文字形式通常比某些浏览器上的构造函数更快(并且在任何浏览器上都不慢)。
当然,这种行为完全取决于实现,因此您需要在自己的目标平台上运行自己的测试。
答案 3 :(得分:0)
我认为性能优势可以忽略不计。
答案 4 :(得分:0)
我认为两种方式在性能方面是相同的,因为它们最终都会创建一个“数组对象”。所以一旦你开始访问数组,机制将是相同的。我不太确定构造数组的机制有多么不同(在性能方面),尽管它不应该是使用一种方式到另一种方式的任何显着增益。