當(dāng)前位置:首頁 > IT技術(shù) > 編程語言 > 正文

js數(shù)組長為什么能任意改變
2022-05-11 11:01:08

如題,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/

開通會(huì)員,享受整站包年服務(wù)立即開通 >