let a=[]console.log(a)a.push(1)控制台显示是空数组,实际展开会有值,为什么会这样?
2 回答
![?](http://img1.sycdn.imooc.com/54586453000163bd02200220-100-100.jpg)
千巷猫影
TA贡献1829条经验 获得超7个赞
因为Array
在js里面是 引用类型,虽然你console.log
在前push
在后,但是因为引用类型是传址
不是传值
,所以你在控制台看到的数组会随着数组的后继操作而更新
![?](http://img1.sycdn.imooc.com/545847aa0001063202200220-100-100.jpg)
慕田峪7331174
TA贡献1828条经验 获得超13个赞
因为你点击展开的时候,它是实时读取数据,所以你能看的到之后push
的值。换个说法,就是console.log
的时候只是那个时间的一个快照,所以出来是一个空数组,但是它还保持着与内存之间的联系。你点击展开的时候,浏览器实时从内存中读取到了它里面的值。不知道这样说,你能否理解?
添加回答
举报
0/150
提交
取消