数组通过数字进行索引,但它们也是对象。所以也可以包含字符串键,不过这些键值不会被计算进长度内。
const arr = [] arr['foo'] = 'bar' a.length // 0 a['foo'] // 'bar'
但是,如果某一个字符串键可以被强制类型转换为十进制数,那么他会被当做索引来处理:
arr['9'] = 0 arr.length // 10
上面其实创建了一个 “稀疏矩阵”;对于 a[9] 前面的元素,如果访问则返回 undefined
a[9]
undefined
Last updated 2 years ago