使用Array和[]創(chuàng)建數(shù)組的區(qū)別

原文

博客原文

大綱

前言
對使用Array和[]創(chuàng)建數(shù)組的區(qū)別的解釋
個人理解

前言

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

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

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

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')

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

對使用Array和[]創(chuàng)建數(shù)組的區(qū)別的解釋

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

個人理解

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

參考網(wǎng)址

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容