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