js数组长为什么能任意改变
如题,JS数组中有两种存储形式:
快数组:在连续内存中存放数据,数组索引属性;
慢数组:hashTable结构,一种典型的字典形式,命名属性;
在V8中,直接创建数组默认的方式是快数组。
快数组长度是可变的,根据元素的增加和删除来动态调整存储空间大小,原因是其内部可通过扩容(push)和收缩(pop)机制来实现的。
快/慢数组之间的转化:
快到慢:
1、如果快数组扩容后的容量是原来的3倍以上,这就意味着它比HashTable形式存储占用更大的内存,因此会发生快转慢。
2、如果快数组新增的索引与原来最大索引的差值大雨 1024,则会发生快转慢。
慢转快:
1、当慢数组的元素可存放在快数组中,且长度小于 Smi:KmaxValue ,且当前慢数组相对于快数组仅节省了少于或者等于50%的空间,则转变快数组。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
2021-05-11 Vue Element table 合并行