背景
今天在学习JS的数组时,发现JS的数组可以存放不同类型的元素、并且数组长度是可变的。what??这跟我之前接触的数组不一样啊。数据结构中定义的数组都是定长的、数据类型一致的存储结构。JS中的数组竟然如此特殊,这也是为什么标题中数组二字加上了“”的原因。带着一脸的懵逼,打开搜索引擎,一探究竟。
目录:
什么是数组
首先来看维基百科中对于数组的定义:这里有两个关键的点,相同类型、连续内存。
下面来看数组在内存中的表现形式:在数据结构,C、C 、Java等语言中的数组,是在内存中划分一串连续的固定长度的区域存放一组相同的基本数据类型的值。这里面涉及到了几个重要的概念,连续、固定长度、相同类型、基本数据类型。
连续
连续空间是数组的特点,区分于链表类型的数据结构,这使得它的空间可以只用来存放值,而不需要像链表一样划分空间来存储指针。随机遍历的速度快。
固定长度
因为数组的空间是连续的,这就意味着在内存中会有一整块空间来存放数组,如果不是固定长度,那么内存中位于数组之后的区域会没办法分配,内存不知道数组还要不要继续存放,要使用多长的空间。长度固定,就界定了数组使用内存的界限,数组之外的空间可以自由分配。
相同的基本数据类型
因为数组的长度是固定的,那么其中存放的元素的长