js数组长为什么能任意改变

如题,JS数组中有两种存储形式:

快数组:在连续内存中存放数据,数组索引属性;

慢数组:hashTable结构,一种典型的字典形式,命名属性;

在V8中,直接创建数组默认的方式是快数组。

快数组长度是可变的,根据元素的增加和删除来动态调整存储空间大小,原因是其内部可通过扩容(push)和收缩(pop)机制来实现的。

快/慢数组之间的转化:

快到慢:

1、如果快数组扩容后的容量是原来的3倍以上,这就意味着它比HashTable形式存储占用更大的内存,因此会发生快转慢。

2、如果快数组新增的索引与原来最大索引的差值大雨 1024,则会发生快转慢。

慢转快:

1、当慢数组的元素可存放在快数组中,且长度小于 Smi:KmaxValue ,且当前慢数组相对于快数组仅节省了少于或者等于50%的空间,则转变快数组。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值