一.先看下以下Js代码:
var a = [1,2,3]; //定义一个数组a
delete a[2]; //删除最后一个元素,此时的元素为[1,2]
alert(2 in a); //结果为false?
为何数组里面有2,却判断2不在数组中?那是为什么呢?
a = [1, 2, 3]; 类似于: a = {0: 1, 1: 2, 2: 3, length: 3}; 那么delete a[2],相当于是删除了key和value。 使用alert(2 in a),是判断a中是否还存在key 2。 这个2在数组中的话,等于小标。
原来alert();中的2指的是下标!~
alert(2 in a)中的2指的是数组的下标,都删掉了,当然不存在a[2]了
var a = [1,2,3];
delete a[2]; delete 以后a的长度只有两个
alert(2 in a); a[2] 取值 undefined 当然false
错的,我也说错了,delete后,长度不变的,只是undedine;你alert(a.length);试试看!~
楼主,把你的代码稍微改动一下你就知道了。
var a = [11, 12, 13]; //定义一个数组a delete a[2]; //删除最后一个元素,此时的元素为[1,2] alert(1 in a);
这样改动以后输出的是true, 那么数组里没有1这个元素啊? 为什么是true.
原因就不多说了,楼上几个家伙已经说的很清楚了, 这里的1是下标。