在读犀牛书时JS中稀疏数组部分的一些疑惑
如上图所示
下面是我的理解:
1.可以给数组元素赋值undefined,此时该数组元素存在,它的值为undefined
2.省略数组直接量的值,该数组元素也存在,默认赋值为undefined
3.使用 var a = new Array(3),申请了内存空间,访问数组元素返回undefined,但是数组中的元素是不存在的
4.
var a = ['first','second'];
a[1001] = ['defined'];
此时a数组的长度是1002,空索引会自动被填充,并赋值undefined
拜托大神帮忙看看我哪里理解的不正确。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我看的时候的理解就是,没有自己显示赋值的,都是不存在的,也就是说是JS自动补充的undefined,而这个表示就是你没有定义它,但是你自己显示的定义undefined,JS就不会再说它是你没有定义的,而是你定义的undefined...,听起来很绕口,但是我这么理解感觉差不多了
我在chrom控制台测试了一下,显示如上图所示,结果和楼顶回答的一致,没有自己显示赋值的,都是不存在的。而且我还是坚持认为:如果根据性能优化的方面来讲,索引应该不会自动填充,访问2-1000下标的时候返回的是undefined类型而不是undefined值,也就是说这之间的数组元素是不存在的。我估计那个length的更新原理就是max(index)+1