为什么JS中访问稀疏数组中元素的开销比密集数组高 - ParadiseGuo/JavascriptLearning GitHub Wiki

JS的密集数组和C的数组有些类似,在内存为密集数组分配资源的时候,是连续的。查找的时候根据数组首地址偏移index个距离,就可以取到数据在内存中的地址,从而取得值。但是稀疏数组类似于链表,定义稀疏数组的变量记录的是该稀疏数组的首地址,通过这个首地址查找到的是一个哈希表,这个哈希表的key值记录的其实是元素在内存中的地址(类似于链表中Next字段里记录的是链表下一个节点数据内存所在的地址),在查找稀疏数组里的元素时,依靠的是从第0个元素开始依次找Next记录的下一个元素的地址,直到找到第N个元素的地址再去取值,相当于它在找到了第0个元素的地址后,还需要再跳转index次。