使用Array和[]創建數組的區別


原文

  簡書原文:https://www.jianshu.com/p/57a337d20aea

大綱

  前言
  對使用Array和[]創建數組的區別的解釋
  個人理解

前言

  JS定義數組變量時,在不需要給定數組的維度和長度的情況下,通常有兩種方法:

1、var arrTest=new Array();
2、var arrTest=[];

  兩者效果一樣。但是經過查看與對比,在各種對外公開的JS大型開源類庫的代碼中,第一種方法基本看不到。
  又或者你曾經嘗試過下面這段代碼:

console.time('using[]')
for(var i=0; i<2000000; i++){var arr = []};
console.timeEnd('using[]')

console.time('using new')
for(var i=0; i<2000000; i++){var arr = new Array};
console.timeEnd('using new')

  你會發現下面這段代碼的結果有一些有意思的規律,那就是:使用using new的時間總是會比using []來的長。哦,yes,有可能你會覺得是因為代碼的順序的問題,那么我們改一下代碼的順序,但是你會很遺憾的發現,結果依然是使用using new的時間總是會比using []來的長,是不是感覺很神奇?下面就是本人對此問題收集到的一些解釋和自己對這個問題的理解。

對使用Array和[]創建數組的區別的解釋

  針對這個問題進行了搜索與尋找。在CSDN上找到一篇關於new Array()與[]的差別的討論帖。帖子中提到了兩者的細微差別:使用new關鍵字的方法會在內存中開辟一些空間,用來記錄與存儲該變量,也就是這是一個實例化過程。
  以下為原帖中引用的記錄:
  “new關鍵字的使用,除了在需要實例化一個對象,或罕見的需要延時加載數據的情況外,你基本上不需要使用new關鍵字。在Javascript里分配大量的new變量地址是一項很慢的操作,為了效率起見,你應該始終使用對象符號。
  在另外一個搜索結果中,有提到這樣的一個說法:“很簡單,Array()是一個對象,[]是一個數據原型。使用new Array()系統每次都會新生成一個對象(瀏覽器每生成一個對象都會耗費資源去構造他的屬性和方法),他的子集是[];個人推薦使用[],效率高。瀏覽器對於CPU很吃緊,所以很多時候要有技巧。比如數字轉換成字符只要a=a+'';就可以了,比用String效率高了很多。但是如果亂用是會造成錯誤的

個人理解

  我在數據類型一章中有提到過一種數據包裝類型,創建一個字符串的方式有:‘字符串’或者是new String('字符串'),一種是直接創建了一個字符串,一個是調用字符串的構造函數創建字符串對象然后再創建這個字符串,中間多了一個創建對象的過程,也許這在一般情況下是看不出什么區別的,但是像上述例子中,當這個技術足夠大的時候,就會發現了問題所在。因此,如果可以通過[]創建一個純凈的數組,就不需要通過new Array()來創建數組。
這便是我對創建數組的兩種方式的理解,如果有說的不對的地方希望讀者指正,也希望能夠對一些讀者有所幫助。

 

參考網址

https://stackoverflow.com/questions/7375120/why-is-arr-faster-than-arr-new-array

https://tieba.baidu.com/p/2733656837?red_tag=2417487027

http://bbs.csdn.net/topics/390474239

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM