写在前面的
在开发调试过程中,我们经常需要调用console.log
方法来打印出当前变量的值,然而,console.log在浏览器环境下
有时会出现一些异常的现象
开撸代码
在浏览器和nodejs环境下分别运行下面代码
var s = {};
console.log(s);
s.title = 'ee';
在谷歌浏览器结果如下:
在nodejs环境,结果如下:
在火狐浏览器,结果如下:
分析
怎么会这样呢?在google和Safari的webkit中,console.log并没有立即拍摄对象快照,相反,
他只是存储了一个指向对象的引用,然后在代码返回事件队列时才会去拍摄快照,类似于异步操作,
在nodejs和火狐下,它是严格同步的。