背景

js数组底层怎么存储的

徐徐
前端
发表于 2026-04-14 16:00:00
🌺 摘要
js数组底层怎么存储的

数组底层怎么存储的

在JavaScript中,数组和函数的底层存储机制涉及引擎的内部实现(如V8、SpiderMonkey等),不同引擎可能有差异,但核心原理相似。以下是基于V8引擎的常见实现方式

快速元素

  • 连续内存模式​​:当数组元素为同类型(如全数字)且无空洞时,V8会使用连续的线性内存存储(类似C数组),访问速度极快(O(1)复杂度)。
  • 扩容机制​​:当数组超出预分配空间时,V8会动态扩容(通常按固定比例增长,如1.5倍),并复制原有数据到新空间。

字典元素

哈希表模式​​:如果数组出现以下情况,V8会转为哈希表存储(类似对象)以节省内存:

  1. 存在空洞(如[1, , 3])。
  2. 元素类型混杂(如数字+字符串)。
  3. 超大索引(如arr[1000000] = 1)。 特点​​:内存更紧凑,但访问速度稍慢(O(n)~O(1)复杂度)。

类型优化​​:V8会根据元素类型标记数组为SMI(小整数)、Double(浮点数)或Object(其他类型),进一步优化内存和计算。

文章发表于 2026-04-14 16:00:00
作者:徐徐
转载请注明出处
上一篇:js伪数组
下一篇:高阶函数