在js中先申明一个空数组,先打印,再push一个值,为什么打印时会有值

let a=[]
console.log(a)
a.push(1)

控制台显示是空数组,
https://img.mukewang.com/5b6ffa7500018d0a00940038.jpg

实际展开会有值,为什么会这样?

https://img.mukewang.com/5b6ffa820001800101800080.jpg


智慧大石
浏览 3264回答 2
2回答

千巷猫影

因为Array在js里面是 引用类型,虽然你console.log在前push在后,但是因为引用类型是传址不是传值,所以你在控制台看到的数组会随着数组的后继操作而更新

慕田峪7331174

因为你点击展开的时候,它是实时读取数据,所以你能看的到之后push的值。换个说法,就是console.log的时候只是那个时间的一个快照,所以出来是一个空数组,但是它还保持着与内存之间的联系。你点击展开的时候,浏览器实时从内存中读取到了它里面的值。不知道这样说,你能否理解?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript