为什么在JavaScript中这种奇怪的行为?
因为数组只是对象。如果您访问不存在的属性,则会返回undefined
。您只是没有在index处分配元素3
,所以什么也没有。
通过分配更高的索引来自动增长数组不会更改此行为。会影响.length
属性,是的,但是中间索引将不存在。这称为稀疏数组。
为什么在Java / C / C ++中这种奇怪的行为?
因为数组是分配的内存的大块,所以当分配大小为4的数组时,其所有元素均从该内存位置获取其值。为了避免不确定的值,在某些语言/场合中,字段通常使用进行默认初始化0
。