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

关于js中arr的可变长度

关于js中arr的可变长度

慕田峪9158850 2018-09-24 18:06:27
题目描述JS中Array是可变长的,如果没有定义值默认是undefined相关代码var arr = [0,1,2];  arr[10]=10; arr.filter(function(x){    return x===undefined})期待结果题目中只给arr设置了[0,1,2],然后设置arr[10]=10,此时的arr应该是等于[0,1,2,undefined*7,10],然后对这个数组进行过滤操作,会返回等于undefined的项,即返回的应该是[undefined*7]。但是实际的操作结果都是空函数[],然后在filter内部输出x,即var arr = [0,1,2];  arr[10]=10; arr.filter(function(x){    console.log(x);    return x===undefined})发现也只会输出0,1,2,10。看来MDN上面也没有关于这个的解释,所以希望大神能帮忙解答一下,你们将拯救一颗受伤的心灵于水生火热之中,非常感谢大家。
查看完整描述

1 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

直接设定数组length并不会被es5的几个包括(Array.prototype.forEach,Array.prototype.map,Array.prototype.filter,Array.prototype.reduce,。。)数组迭代方法循环。
之前我也不理解,但是在MDN看到它们的Polyfill,迭代的同时都通过 in 运算符 判断当前迭代的索引是否在数组中。
而直接设定长度没有设值的数组索引直接因为不能通过这个判断被剔除了。

查看完整回答
反对 回复 2018-09-24
  • 1 回答
  • 0 关注
  • 1145 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信