javascript数组不确定属性数组[索引]=真/假
我遇到了这个问题,理解了它,但仍然不知道它是什么javascript属性:javascript数组不确定属性数组[索引]=真/假,javascript,arrays,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 有人能给我解释一下吗?感谢JavaScr
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
有人能给我解释一下吗?感谢JavaScript中的标准数组,其中一个效果是它们天生就是一个数组。也就是说,阵列中可以有空插槽 这就是你在那里创造的。在前三行之后,有一个数组,其中有两个条目,分别位于索引1和5,还有一堆完全空的插槽(索引0、2、3、4)。它的
length
属性将是6
。当您尝试从数组中检索不存在的元素时,您会得到值undefined
。(这只是JavaScript一般行为的一个特殊情况:如果您试图检索不存在的对象属性,则会得到值未定义的
)
带有稀疏数组的
console.log
的输出将根据console.log
的实现对其执行的操作而有所不同。关于这个问题的评论表明,控制台可以通过各种不同的方式显示阵列。您可以考虑使用console.log(array.join())
来获得更一致的结果。这将为您提供,true,,,,,true
,因为它为不存在的数组项显示空格(或包含值未定义的,但在您的情况下,它们不存在)。控制台.log
将打印[,true,true]
。请再次检查。实际上它将是[undefined,true,undefined,undefined,undefined,true]
。甚至是[1:true,5:true]
。不管怎样,都应该有人解释。最新的chrome打印[未定义的×1,真的,未定义的×3,真的]
:-|@techfoobar,呃,这太糟糕了。数组是数组,但不是Javascript。它们可能被称为数组,但它们实际上是散列对象。索引只是一个属性,它有一些额外的方法帮助它假装是一个数组。