javascript数组不确定属性数组[index] = true / false

时间:2014-01-13 10:43:54

标签: javascript arrays

我遇到过这个,了解它但仍然不知道它是什么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

有人可以帮我解释一下吗?感谢

1 个答案:

答案 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的数组条目,但在你的情况下,它们不存在)。