javascript - 在读犀牛书时JS中稀疏数组部分的一些疑惑
巴扎黑
巴扎黑 2017-04-11 12:34:25
[JavaScript讨论组]

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

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

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

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

4.

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

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

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

巴扎黑
巴扎黑

全部回复(3)
伊谢尔伦

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

巴扎黑

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

PHP中文网

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号