关于javascript数组的一个问题:
有如下三个数组:
let arr1 = Array(3) let arr2 = []; arr2.length = 3; let arr3 = Array(3).fill()
arr1、arr2、arr3的区别是什么呢?
在浏览器的console面板中 arr1和arr2都显示如下图:
而 arr3显示如下:;
万望各位大侠解惑
已解决
悬赏分:80
- 解决时间 2021-11-29 02:22
点赞 0反对 0举报 0
收藏 0
分享 7
回答3
最佳
-
这牵扯到2个概念一个是稀疏数组,一个是密集数组
最直观的表现就是稀疏数组的empty是无法被遍历的,但是会占用数组长度,这跟数组自身的实现是有关系的,而密集数组每一项不仅可以遍历也可以在遍历的过程中赋值
支持 0 反对 0 举报2021-11-28 08:22
-
这个很好理解,fill函数接收一个参数a,对数组的每一项都填充a.
但是JS里函数的参数很灵活,可以不传,不传的情况下a就是undefined,所以填充的都是undefined.支持 0 反对 0 举报2021-11-28 09:47
-
是这样的:
arr1和arr2中的元素是empty:因为arr1和arr2只是定义了一个数组,这个数组中有3个元素而已,未做任何操作了。所以每个元素的值是空的了。
arr3:因为fill方法就是用来填充数组元素的。如果你在fill('s')这样填充值了,那么数组元素里面就是你传的值s,如果不传值,就是undefined了。就和我们写一个方法 function test (n){console.log(n)} ,调用的时候test('s')一样 传参数了,打印出来的就是传递的参数,不传的话 打印出来就是默认值 undefined支持 0 反对 0 举报2021-11-28 11:15