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

原文

博客原文

大綱

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

前言

JS定義數(shù)組變量時(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的時(shí)間總是會比using []來的長壁公。哦,yes,有可能你會覺得是因?yàn)榇a的順序的問題绅项,那么我們改一下代碼的順序贮尖,但是你會很遺憾的發(fā)現(xiàn),結(jié)果依然是使用using new的時(shí)間總是會比using []來的長趁怔,是不是感覺很神奇湿硝?下面就是本人對此問題收集到的一些解釋和自己對這個(gè)問題的理解。

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

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

個(gè)人理解

我在數(shù)據(jù)類型一章中有提到過一種數(shù)據(jù)包裝類型,創(chuàng)建一個(gè)字符串的方式有:‘字符串’或者是new String('字符串')测砂,一種是直接創(chuàng)建了一個(gè)字符串茵烈,一個(gè)是調(diào)用字符串的構(gòu)造函數(shù)創(chuàng)建字符串對象然后再創(chuàng)建這個(gè)字符串百匆,中間多了一個(gè)創(chuàng)建對象的過程砌些,也許這在一般情況下是看不出什么區(qū)別的,但是像上述例子中,當(dāng)這個(gè)技術(shù)足夠大的時(shí)候存璃,就會發(fā)現(xiàn)了問題所在仑荐。因此,如果可以通過[]創(chuàng)建一個(gè)純凈的數(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)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市衰絮,隨后出現(xiàn)的幾起案子袍冷,更是在濱河造成了極大的恐慌,老刑警劉巖猫牡,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件胡诗,死亡現(xiàn)場離奇詭異,居然都是意外死亡淌友,警方通過查閱死者的電腦和手機(jī)煌恢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來震庭,“玉大人瑰抵,你說我怎么就攤上這事∑髁” “怎么了谍憔?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長主籍。 經(jīng)常有香客問我习贫,道長,這世上最難降的妖魔是什么千元? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任苫昌,我火速辦了婚禮,結(jié)果婚禮上幸海,老公的妹妹穿的比我還像新娘祟身。我一直安慰自己,他們只是感情好物独,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布袜硫。 她就那樣靜靜地躺著,像睡著了一般挡篓。 火紅的嫁衣襯著肌膚如雪婉陷。 梳的紋絲不亂的頭發(fā)上帚称,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天,我揣著相機(jī)與錄音秽澳,去河邊找鬼闯睹。 笑死,一個(gè)胖子當(dāng)著我的面吹牛担神,可吹牛的內(nèi)容都是我干的楼吃。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼妄讯,長吁一口氣:“原來是場噩夢啊……” “哼孩锡!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起亥贸,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤浮创,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后砌函,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體斩披,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年讹俊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了垦沉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,977評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡仍劈,死狀恐怖厕倍,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情贩疙,我是刑警寧澤讹弯,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站这溅,受9級特大地震影響组民,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜悲靴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一臭胜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧癞尚,春花似錦耸三、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至胳徽,卻和暖如春积锅,著一層夾襖步出監(jiān)牢的瞬間爽彤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工乏沸, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留淫茵,地道東北人爪瓜。 一個(gè)月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓蹬跃,卻偏偏與公主長得像,于是被迫代替她去往敵國和親铆铆。 傳聞我的和親對象是個(gè)殘疾皇子蝶缀,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容