为了账号安全,请及时绑定邮箱和手机立即绑定

老师, 数组delete元素arr[2] 和arr[2]=undefined; 两者的 2 in arr; 结果不同

数组delete元素arr[2]  和arr[2]=undefined;  两者的 2 in arr; 为何返回值分别为false和true不同呢?这是跟数组的原型链有关吗

var arr_1=[0,1,2,3,4];
delete arr_1[2];
2 in arr_1;

var arr_2=[0,1,2,3,4];

arr_2[2]=undefined;

2 in arr_2;

正在回答

2 回答

恭喜你已经会自问自答了!

0 回复 有任何疑惑可以回复我~
#1

瞅瞅 提问者

哈哈……当时稀疏数组那章节还没看。 多谢老师!
2015-03-14 回复 有任何疑惑可以回复我~

看了老师稀疏数组的讲解,我的理解为

delete 是将该数组元素删除,元素已不存在,该数组成为稀疏数组。

而赋值=undefined,表示该数组元素仍存在,只是值为undefined,该数组不是稀疏数组。

1 回复 有任何疑惑可以回复我~
#1

Bosn

回答正确
2015-03-14 回复 有任何疑惑可以回复我~
#2

慕仙223896

还是不懂,赋值=undefined,但是数值2已经没了改成undefined了,再判断数值2 in arr_2 ,不还应该返回false嘛
2018-08-01 回复 有任何疑惑可以回复我~
#3

qq_慕慕947699 回复 慕仙223896

in操作符:   当“对象”为数组时,“变量”指的是数组的“索引”;(也就是说此时的2是索引2不是值为2)   当“对象”为对象是,“变量”指的是对象的“属性”。
2019-10-29 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

老师, 数组delete元素arr[2] 和arr[2]=undefined; 两者的 2 in arr; 结果不同

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信