题目描述:写出执行结果,并解释原因
var arr = [0,1,2];
arr[10] = 10;
var newArr = arr.filter((x)=>x===undefined);
console.log(newArr);
答案:
[]
解析:
Array.prototype.filter 的 polyfill ,filter 迭代这个数组时,首先检查了这个索引值是不是数组的一个属性,arr 如下:
0 in arr; =>true
3 in arr;=>false
10 in arr;=>true
也就是说从 3 - 9 都是没有初始化的 ‘empty' 这些索引并不存在于数组中
在 array 的函数调用的时候会跳过这些 ’empty'
本文深入探讨了JavaScript中数组的filter方法工作原理,通过具体示例展示了如何使用filter方法筛选数组中的undefined元素,并揭示了其背后的迭代机制及索引检查过程。
496

被折叠的 条评论
为什么被折叠?



