let a=[]
console.log(a)
a.push(1)
控制台显示是空数组,
实际展开会有值,为什么会这样?
let a=[]
console.log(a)
a.push(1)
控制台显示是空数组,
实际展开会有值,为什么会这样?
因为你点击展开的时候,它是实时读取数据,所以你能看的到之后push
的值。换个说法,就是console.log
的时候只是那个时间的一个快照,所以出来是一个空数组,但是它还保持着与内存之间的联系。你点击展开的时候,浏览器实时从内存中读取到了它里面的值。不知道这样说,你能否理解?
这个例子充分体现了console.log是异步的
, 所以尽量不要用console去调试你的app.
上面那个空的只是一个快照,点开的时候才是真实的数据。
如果你把a改成基本类型就绝对不会有这个问题了。
13 回答12.8k 阅读
7 回答1.9k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
6 回答822 阅读✓ 已解决
6 回答1k 阅读
2 回答1.3k 阅读✓ 已解决
因为
Array
在js里面是 引用类型,虽然你console.log
在前push
在后,但是因为引用类型是传址
不是传值
,所以你在控制台看到的数组会随着数组的后继操作而更新