javascript - 看jquery sizzle选择器源码的时候遇见的一个数组问题
巴扎黑
巴扎黑 2017-04-11 13:29:05
[JavaScript讨论组]

或许在大神眼里挺简单的一个问题。但是我不太明白为什么。

我变量a是在console后面添加内容,为什么在前面的输出中会输出完整的数组。不应该输出undefined吗?

巴扎黑
巴扎黑

全部回复(2)
伊谢尔伦

首先,在JS中,数组和对象都是引用类型,引用是在操作堆内存,他们指向的是内存里同一个数据,当b.push(a)的时候,实际上b内的元素a数组和a指向的是同一个地址,所以操作a的时候,b内的元素a数组也在改变。

另外浏览器的控制台是延迟加载(lazy loading),是在你展开那个 Object 的时候,才会去枚举该对象中的每一个属性,并把它显示出来的。

不信你可以把你的console.log(b)改为console.log(JSON.stringify(b))结果是[]。

巴扎黑

这本书叫做《Async javascript》,不是数组的问题,是以为console.log是异步的,会放到事件队列里。等for执行完再执行,所以每次都是完整的数组

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

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