数组
最后更新于
数组是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。 ——数据结构与算法之美
js 原本没有真正的数组,因为 js 的数组可以存放不同类型的数据,不同数据类型存储所需要的空间大小不同,这就导致用来存放数组的内存地址不可能是连续的。所以 js 的数组是按照类似哈希映射的方法存储的,这种方式的数组读写操作相对低效。
v8 引擎对数组做了优化,如果一个数组中所有的类型都是一样的,那么就在内存中开辟一个连续的空间来储存数组。但是如果数组中又添加了一个不同的类型,那么 v8 引擎就会按之前的老办法将数组重建,这时反而会更低效。
ES6 的新增了 ArrayBuffer
,它可以创建内存空间连续的数组。显而易见,对通过 ArrayBuffer
创建的数组进行遍历操作,速度更快。