空位数组

课后整理 2020-12-10

空位数组就是数组中包含空元素。所谓空元素,就是在语法上数组中两个逗号之间没有任何值。出现空位数组的情况如下:

var a = [1, , 2];
a.length;                                                   //返回3 

如果最后一个元素后面加逗号,不会产生空位,与没有逗号时效果一样。

var a = [1, 2, ];
a.length;                                                   //返回2 
var a = new Array(3);                                //指定长度的数组 
a.length;                                                   //返回3,产生3个空元素  
var a = [1, 2, 3];
delete a[1];
console.log( a[1] );                                    //  undefined
console.log( a.length );                              //  3 

上面代码使用delete命令删除了数组的第2个元素,这个位置就形成了空位。

空元素可以读写,length属性不排斥空位。如果使用for语句和length属性遍历数组,空元素都可以被读取,空元素返回值为undefined。

var a = [, , ,];
for(var i =0; i<a.length;i++)
    console.log( a[i]);                              //返回3个undefined

【注意】

空元素与元素的值为undefined是两个不同的概念,虽然空元素的返回值也是undefined。JavaScript在初始化数组时,只有真正存储有值的元素才可以分配内存。

使用forEach()方法、for/in语句、以及Object.keys()方法进行遍历时,空元素都会被跳过,但是值为undefined元素,能够正常被迭代。

var a = [, , undefined,];
for (var i in a) {
    console.log(i);                                    // 返回2,仅读取了第3个元素 
}
console.log(a.length);                                // 返回3,包含3个元素