javascript 中的 new Array() 和 var arr=[] 有何区别

arr.jpg

javascript 中 new Array() 和 var arr=[ ] 创建数组到底有何不同?

今天就探讨一个 JavaScript 中很常见的问题.


var arr=[] 这是一种字面量定义数组的方法



var arr=new Array() 这是调用数组构造函数生成的数组


上面的2种定义数组的方法到底一样不一样 目前我们大致的认同是下面这样的

用new 关键字去内存开辟一个存储地址比较耗资源,耗内存.

而字面量方式直接在内存开辟一个存储字段相对简单,不耗资源.

我们首先不去否定上面的结论对不对.

首先从功能上来说 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 Date().getTime();
console.log('输出耗时:',endTime-startTime);

上面 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 arr = new Array();
  • var arr = new Array(8);
  • var arr = new Array("c", "d", “e”);

字面量方式 var d = ["111", "222", "333"];

所以在性能上这2个方法没有太大差距,只是一种使用习惯,字面量更加直接了当. 退一步讲,如果我用 var arr=[‘111’,’222’,’333’]; 定义一个数组的时候,难道它没有通过构造函数在内存中开辟一个存放地址吗?

出自:javascript 中的 new Array() 和 var arr=[] 有何区别



回到顶部