就是包含从0开始的不连续索引的数组。
a =new Array(5) //没有元素,但length=5
a[1000] = 0; //赋值添加一个元素,但是设置length为1001。
可以使用in操作符检测两者之间的区别:
var a1 = [,,,]; //数组是[undefined, undefined, undefined]
var a2 = new Array(3); //该数组没有元素
0 in a1 ; //=>true
0 in a2; //=>false
注意:当省略数组直接直接量中的值时(使用连续的逗号如[1,,3]),这时得到的数组也是稀疏数组。省略掉的值是不存在的。如果你确实碰到了稀疏数组,你的代码很可能像对待非稀疏数组一样来对待它们,只不过它们包含一些undefined值。