MDN定义了以下差异,但我并不理解其中的区别。我创建了一个数组,然后删除了一个元素,然后尝试调用该元素,结果返回undefined。
var ary=[0,1,2,3,4];
delete ary[3];
ary[3]// returns undefined
ary.length //returns 5
var ary2=[0,1,2,3,4];
ary2[2]=undefined
ary2[2]// returns undefined
ary2.length// returns 5
删除数组元素时,数组长度不会受到影响,即使你删除的是数组的最后一个元素也是如此。
使用delete运算符删除数组元素后,该元素将不再属于该数组。在以下示例中,使用delete删除了trees[3]元素。
var trees = ["redwood","bay","cedar","oak","maple"];
delete trees[3];
if (3 in trees) {
// this does not get executed
}
如果你想让一个数组元素存在但是值为undefined,使用undefined值而不是delete操作符。在下面的示例中,trees[3]被赋值为undefined,但是数组元素仍然存在:
var trees = ["redwood","bay","cedar","oak","maple"];
trees[3] = undefined;
if (3 in trees) {
// this gets executed
}