console.log是同步还是异步?

clipboard.png

clipboard.png

这两种的输出结果不一样
第一张图上面输出的obj里有数据,但是获取到时是undefined

阅读 10.9k
8 个回答

clipboard.png

你会发现你是点击的时候才会出现值,而当你点了之后旁边还多了个 “i” 标志

clipboard.png

控制台都告诉你了,是因为下面更改过这个对象的属性!

控制台输出的时候获取一次值
当你点击下拉展开更多的时候会再次的获取值

代码是同步执行的,跟console本身同步异步没关系。
console.log()在控制台输出引用值时确实是当时的值,但是你点开箭头的时候它会重新获取这些引用的值。

clipboard.png

这个问题我是在JavaScript异步编程一书中看到的问题,当时感觉有点迷糊,就来问问各位了

这个应该没有异步之说。就算打印出来有某些值,也是不可用的。
clipboard.png

同步 下一题

console 是异步的,具体可以看看这个 issue ,之前有个内存泄漏的问题无意中发现的

https://github.com/nodejs/node/issues/2970

划重点 console output is buffered and async.

但是回归到题目上面来,这个地方确实是因为引用问题罢了

第一张图 你打印obj.aaa的时候obj这个对象了没有aaa这个属性~当然是undefined了,下面你给obj.aaa='aaa'赋值了~就可以打印出来aaa啦

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏