写作更好吗?
var arr=[]; then var arr=new Array();
var obj={}; then var obj=new Object();
Run Code Online (Sandbox Code Playgroud)
如果是这样,为什么?
我阅读了关于这个想法的幻灯片第36页,但没有给出解释或示例为什么它更好.
这些定义之间没有太大区别,除了第一种方式使用数组/对象文字,第二种方式使用数组/对象构造函数.
数组构造函数可能会返回不同的结果,具体取决于传入的参数数量.如果传入一个参数,则会创建一个新的空数组,该数组的长度为该参数.例如:
// 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
Run Code Online (Sandbox Code Playgroud)
但是,传递一个参数会产生不同的结果:
// 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
Run Code Online (Sandbox Code Playgroud)
定义数组或对象的最快方法当然是文字方式,因为您不需要先调用构造函数.无论如何,真正的实际速度差异可以忽略不计.
我在Chrome 6中进行了速度测试,其中我将相同的阵列定义了20倍10000000 1, 2, 3,这给出了以下结果:
Average speed per 10000000 calls
Array Constructor : 226.55 ms
Array Literal : 159.1 ms
Run Code Online (Sandbox Code Playgroud)
如您所见,每10000000个数组定义的数组文字快67,45ms.
| 归档时间: |
|
| 查看次数: |
5319 次 |
| 最近记录: |