首页 新闻 会员 周边 捐助

Javascript代码的小小疑问(9)

0
[已解决问题] 解决于 2015-06-04 16:13

一.先看下以下Js代码:

var a = [1,2,3];  //定义一个数组a

delete a[2];      //删除最后一个元素,此时的元素为[1,2]

alert(2 in a);  //结果为false?

 

为何数组里面有2,却判断2不在数组中?那是为什么呢?

Coca-code的主页 Coca-code | 初学一级 | 园豆:10
提问于:2015-06-04 15:18
< >
分享
最佳答案
0
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在数组中的话,等于小标。
奖励园豆:5
幻天芒 | 高人七级 |园豆:37207 | 2015-06-04 15:45

原来alert();中的2指的是下标!~

Coca-code | 园豆:10 (初学一级) | 2015-06-04 16:14
其他回答(3)
0

alert(2 in a)中的2指的是数组的下标,都删掉了,当然不存在a[2]了

浅草青晨 | 园豆:904 (小虾三级) | 2015-06-04 15:27
0

var a = [1,2,3];  

delete a[2];      delete 以后a的长度只有两个

alert(2 in a);  a[2] 取值 undefined 当然false

小朋友写代码 | 园豆:3 (初学一级) | 2015-06-04 15:44

错的,我也说错了,delete后,长度不变的,只是undedine;你alert(a.length);试试看!~

支持(0) 反对(0) Coca-code | 园豆:10 (初学一级) | 2015-06-04 16:12
0

楼主,把你的代码稍微改动一下你就知道了。

            var a = [11, 12, 13];  //定义一个数组a
            delete a[2];      //删除最后一个元素,此时的元素为[1,2]
            alert(1 in a);

这样改动以后输出的是true, 那么数组里没有1这个元素啊? 为什么是true.

原因就不多说了,楼上几个家伙已经说的很清楚了, 这里的1是下标。

请叫我头头哥 | 园豆:9382 (大侠五级) | 2015-06-04 16:12
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册