基于webkit的浏览器比如chrome和safari,console.log()表现出来异步效果
-
看下面这一段代码:
var obj = {}; console.log(obj); obj.name = '张三';
我们会发现在浏览器中打印的结果是
{ name:'张三' }
,而我们期望的结果应该是一个空的{}
。导致这种结果的出现原因在于console.log()
对于打印的对象存储的是地址值,并且没有在代码执行处立即执行拍摄快照,而是等到代码返回事件队列时才去拍摄快照,所以此时我们看到的是堆内存空间存放的那个变化后的obj
值;
值得我们注意的是在node
环境下去跑上面这段代码,打印的结果是一个空的{}
,由此得出node
环境下的console.log()
是实时拍摄快照