如題,JS數(shù)組中有兩種存儲(chǔ)形式:
快數(shù)組:在連續(xù)內(nèi)存中存放數(shù)據(jù),數(shù)組索引屬性;
慢數(shù)組:hashTable結(jié)構(gòu),一種典型的字典形式,命名屬性;
?
在V8中,直接創(chuàng)建數(shù)組默認(rèn)的方式是快數(shù)組。
快數(shù)組長度是可變的,根據(jù)元素的增加和刪除來動(dòng)態(tài)調(diào)整存儲(chǔ)空間大小,原因是其內(nèi)部可通過擴(kuò)容(push)和收縮(pop)機(jī)制來實(shí)現(xiàn)的。
?
快/慢數(shù)組之間的轉(zhuǎn)化:
快到慢:
1、如果快數(shù)組擴(kuò)容后的容量是原來的3倍以上,這就意味著它比HashTable形式存儲(chǔ)占用更大的內(nèi)存,因此會(huì)發(fā)生快轉(zhuǎn)慢。
2、如果快數(shù)組新增的索引與原來最大索引的差值大雨 1024,則會(huì)發(fā)生快轉(zhuǎn)慢。
?
慢轉(zhuǎn)快:
1、當(dāng)慢數(shù)組的元素可存放在快數(shù)組中,且長度小于 Smi:KmaxValue ,且當(dāng)前慢數(shù)組相對(duì)于快數(shù)組僅節(jié)省了少于或者等于50%的空間,則轉(zhuǎn)變快數(shù)組。
本文摘自 :https://www.cnblogs.com/