上面的a[0~2]没问题,不过函数和对象没试过,所以写了个代码测试了下,发现只要使用方式正确,也是可以的:
<script>
function a() { // 函数
alert(3)
}
function b(a, b) { // 对象
this.a = athis.b = b
this.f = function() {alert(a+b)}
}
var x = [1,a,new b(3,4)]
x[1]()
x[2].f()
</script>
常规数组: 数组元素内容是一种类型的元素,如const arr = [1,2,3,4],在存储空间是连续内存的
JS数组: 数组元素内容不是同一种类型的元素,如const arr = ['haha', 1, {a:1}],则在存储上是一段非连续空间。此时,JS 数组不再具有数组的特征,其底层其实是由链表来实现的
总结
链表的插入/删除效率较高,而访问效率较低;
数组的访问效率较高,而插入效率较低