在读犀牛书时JS中稀疏数组部分的一些疑惑

发布于 2022-09-04 15:03:43 字数 494 浏览 9 评论 0

图片描述

如上图所示
下面是我的理解:

1.可以给数组元素赋值undefined,此时该数组元素存在,它的值为undefined

2.省略数组直接量的值,该数组元素也存在,默认赋值为undefined

3.使用 var a = new Array(3),申请了内存空间,访问数组元素返回undefined,但是数组中的元素是不存在的

4.

var a = ['first','second'];
a[1001] = ['defined'];

此时a数组的长度是1002,空索引会自动被填充,并赋值undefined

拜托大神帮忙看看我哪里理解的不正确。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

栖迟 2022-09-11 15:03:43

我看的时候的理解就是,没有自己显示赋值的,都是不存在的,也就是说是JS自动补充的undefined,而这个表示就是你没有定义它,但是你自己显示的定义undefined,JS就不会再说它是你没有定义的,而是你定义的undefined...,听起来很绕口,但是我这么理解感觉差不多了

丘比特射中我 2022-09-11 15:03:43

图片描述

图片描述

我在chrom控制台测试了一下,显示如上图所示,结果和楼顶回答的一致,没有自己显示赋值的,都是不存在的。而且我还是坚持认为:如果根据性能优化的方面来讲,索引应该不会自动填充,访问2-1000下标的时候返回的是undefined类型而不是undefined值,也就是说这之间的数组元素是不存在的。我估计那个length的更新原理就是max(index)+1

北陌 2022-09-11 15:03:43

所以书上这里应该输入的是false吧。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文