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

来源:5-1 [JavaScript]创建数组、数组操作

瞅瞅

2015-03-14 01:51

数组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回答

  • Bosn
    2015-03-14 11:09:16

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

    瞅瞅

    哈哈……当时稀疏数组那章节还没看。 多谢老师!

    2015-03-14 16:25:55

    共 1 条回复 >

  • 瞅瞅
    2015-03-14 02:17:08

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

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

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

    qq_慕慕9... 回复慕仙2238...

    in操作符:   当“对象”为数组时,“变量”指的是数组的“索引”;(也就是说此时的2是索引2不是值为2)   当“对象”为对象是,“变量”指的是对象的“属性”。

    2019-10-29 15:28:46

    共 3 条回复 >

JavaScript深入浅出

由浅入深学习JS语言特性,且解析JS常见误区,从入门到掌握

281112 学习 · 1020 问题

查看课程

相似问题