题目描述
区分 new Array(5) vs new Array(5).fill() vs Array.apply(null,{length:5})的区别。。
题目来源及自己的思路
有点搞不清这几个的区别,恳请指教,谢谢
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
区分 new Array(5) vs new Array(5).fill() vs Array.apply(null,{length:5})的区别。。
有点搞不清这几个的区别,恳请指教,谢谢
// 请把代码文本粘贴到下方(请勿用图片代替代码)
new Array(5) // []
new Array(5).fill(0) // [0,0,0,0,0]
Array.apply(null,{length:5}) // [undefined,undefined,undefined,undefined]
第一个是普通的Array 构造函数实例化一个长度为5的数组,返回的是length属性为5的空数组
第二个是在第一个实例化后,为五个元素赋值,
第三个是apply借用Array的方法,this指向js的根对象null,实例化一个length为5, 值为undefined的空数组,Array.apply(null, {length:5,0:1,1:2}) 这么用的话,得到: [1,2,undefined,undefined,undefined]
楼主可以参考下这篇文章:https://segmentfault.com/a/11...
8 回答4.7k 阅读✓ 已解决
6 回答3.4k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
5 回答6.3k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
new Array(arrayLength)
在 Chrome Dev Tools 的 Console 中可以看到
new Array(5)
打印结果是:[empty × 5]
,empty
表示没有包含任何实际的元素,使用map
之类的数组方法迭代访问,即Array.prototype.fill
new Array(5).fill()
即使用undefined
填充数组中全部元素,即[undefined, undefined, undefined, undefined, undefined]
Function.prototype.apply,类数组对象
Array.apply(null,{length:5})
即给 Array 传入参数:5个 undefined,结果为[undefined, undefined, undefined, undefined, undefined]