今天就探讨一个 JavaScript 中很常见的问题.
var arr=[]这是一种字面量定义数组的方法
var arr=new Array()这是调用数组构造函数生成的数组
上面的2种定义数组的方法到底一样不一样目前我们大致的认同是下面这样的
我们首先不去否定上面的结论对不对.
首先从功能上来说 var =arr=[] 和 var arr= new Array() 是一样的.然后我们用一段代码来验证一下
var startTime=new Date().getTime();var test1=[];var test2=[];for(var i=0;i<1000000;i++){ test1[i]="{};" test2[i]="new" object();}var="" endtime="new">1000000;i++){>
上面 test1 和 test2 2个数组中每个元素都是一个数组,可以依次注释任意一行代码,我大概测试10多次以上
36**36**
上面的2个耗时都是 3600 秒左右,忽上忽下,没有丝毫大的差距我的运行话就 MacBook Air (13-inch, Mid 2013) ,处理器:1.3 GHz Intel Core i5 , 内存: 4 GB 1600 MHz DDR3 , JS Runner 工具
所以姑且认为上面的2种方法差异不大.[ ]和new Array()在语法上唯一的区别是new Array()可以直接设置数组的长度
new Array() 在构造数组的时候有下面几种方法
字面量方式
var d = ['111', '222', '333'];
所以在性能上这2个方法没有太大差距,只是一种使用习惯,字面量更加直接了当.退一步讲,如果我用 var arr=[‘111’,’222’,’333’]; 定义一个数组的时候,难道它没有通过构造函数在内存中开辟一个存放地址吗?
联系客服