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