解析浏览器和nodejs环境下console.log()的区别

本文探讨了在不同环境中使用console.log方法的行为差异。特别是在浏览器(如Chrome、Safari、Firefox)和Node.js环境下,console.log在对象快照捕获机制上的不同实现。
写在前面的

在开发调试过程中,我们经常需要调用console.log
方法来打印出当前变量的值,然而,console.log在浏览器环境下
有时会出现一些异常的现象

开撸代码

在浏览器和nodejs环境下分别运行下面代码

var s = {};
console.log(s);
s.title = 'ee';

在谷歌浏览器结果如下:
1037576-20170420151518321-640449732.png
在nodejs环境,结果如下:
1037576-20170420151547524-404121078.png
在火狐浏览器,结果如下:
1037576-20170420152559556-11278432.png

分析

怎么会这样呢?在google和Safari的webkit中,console.log并没有立即拍摄对象快照,相反,
他只是存储了一个指向对象的引用,然后在代码返回事件队列时才会去拍摄快照,类似于异步操作,
在nodejs和火狐下,它是严格同步的。

转载于:https://www.cnblogs.com/theone67/p/6739030.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值