数组
前端的数组其实不是真正意义上的数组,用过就知道数组长度不固定,每一项可以存不同类型的数据,这和数据结构中定义数组的特点是不同的。
数据结构中的数组
定义:一个固定长度的连续的内存空间
特性:
- 整个数组占用的内存空间是连续的
- 数组中的元素数量是固定的(不可增加也不可减少),数组在创建时就要制定长度
- 每个元素占用的内存大小是完全一样的
- 数组变量指向第一个元素的地址
优点:
- 通过数组下标(偏移量)查询效率高,遍历速度快
缺点:
- 当内存空间碎片太多,连续的数组内存可能存不下
- 数组的长度固定,因此要对数组进行增删是很麻烦的,需要额外的申请内存空间,增加内存的开销和时间开销
JS 中的数组
js 中没有真正意义上的数组,所谓的 Array,其本质上是一个链表,这样也就能解释得通。
不过在 ES6 之后,出现了真正的数组,叫类型化数组,比如 int8Array ,但是只能存储数字。所以功能有限