我遇到过这个,了解它但仍然不知道它是什么javascript属性:
var array = [];
array[1] = true;
array[5] = true;
console.log(array) #=> [true, true]
array[0] #=> undefined
array[1] #=> true
array[2] #=> undefined
array[5] #=> true
有人可以帮我解释一下吗?感谢
答案 0 :(得分:2)
JavaScript aren't really arrays at all中的标准数组,其中一个效果就是它们本身就是sparse。也就是说,数组中可以有空槽。
那就是你在那里创造的东西。在前三行之后,你有一个数组,里面有两个条目,索引为1和5,还有一堆完全空的插槽(索引为0,2,3,4)。其length
属性为6
。当您尝试从数组中检索不存在的元素时,您将获得值undefined
。 (这只是JavaScript一般行为的一个特例:如果您尝试检索不存在的对象属性,则会得到值undefined
。)
具有稀疏数组的console.log
输出将根据console.log
的实现方式而有所不同。对该问题的评论表明,控制台可以通过各种不同的方式显示阵列。您可以考虑使用console.log(array.join())
来获得更一致的结果。这会给你,true,,,,true
,因为它显示了不存在的数组条目的空白(或包含值undefined
的数组条目,但在你的情况下,它们不存在)。