写得更好:var arr = [];比var arr = new Array();?

时间:2010-08-02 08:20:10

标签: javascript

是否更好
var arr=[]; then var arr=new Array(); 
var obj={}; then var obj=new Object();

如果有,为什么?

我阅读slide lection page 36关于这个想法的内容,但没有给出任何解释或示例为什么它更好。

3 个答案:

答案 0 :(得分:6)

这些定义之间没有太大区别,除了第一种方式使用数组/对象文字,第二种方式使用数组/对象构造函数。

数组构造函数可能返回不同的结果,具体取决于传入的参数数量。如果传入一个参数,则会创建一个新的空数组,该数组的长度为该参数。例如:

// arr1 is the same as arr2
var arr1 = new Array(1, 2, 3, 4);
var arr2 = [1, 2, 3, 4];

alert(arr1.length == arr2.length); // true
alert(arr1[0]); // 1
alert(arr2[0]); // 1

但是,传递一个参数会产生不同的结果:

// arr3 has length 200 and is empty, while arr4 has length 1 and contains a number
var arr3 = new Array(200);
var arr4 = [200];

alert(arr3.length == arr4.length); // false
alert(arr3[0]); // 'undefined'
alert(arr4[0]); // 200

定义数组或对象的最快方法当然是文字方式,因为您不需要先调用构造函数。无论如何,真正的速度差异可以忽略不计。

我在Chrome 6中做了speed test,其中我将相同数组1, 2, 3定义了20倍10000000,这给出了以下结果:

Average speed per 10000000 calls
Array Constructor  : 226.55 ms
Array Literal      : 159.1  ms

如您所见,每10000000个数组定义的数组文字快67,45ms。

答案 1 :(得分:1)

托马斯·福克斯在他的slideshow中根据该视频(第20页的“拥抱语言”部分)说道: var arr = []和var obj = {}更好,速度更快。我不知道为什么,但无论如何,这是一个非常有趣的幻灯片:)

答案 2 :(得分:1)

从典型的程序员角度来看,似乎你倾向于使用var arr = new Array();以给出典型对象实例化的感觉。但是在javascript中通常使用var arr = []的好习惯; 就个人而言,除了Harmen解释的一个参数之外,我没有看到使用两种方式的差异。

检查此链接 - http://yuiblog.com/blog/2006/11/13/javascript-we-hardly-new-ya/