为什么obj不等于obj?
近几日,在学习jQuery时,发现了一个有趣的现象。即obj不等于obj, 我们先来看一下代码示例。
var obj = {}; var obj1 = {}; console.log(obj === obj1);
以正常的角度理解:我们在js中,创建了两个空对象,其值应该相等才对。
但是,答案并非如此。 打印的结果为:false
那这又是为什么呢?
- 其实要解决这个问题,我们还要先从JS中的基本数据类型和引用数据类型说起。
上一篇文章,已经为大家介绍了JS中的两种数据类型:基本数据类型值,引用类型数据值。
如果大家还有印象的话,其实本例中的obj对象,属于引用类型的值。
引用类型的值存放于堆内存中。
根据上图我们可以发现,虽然两个obj对象都没有被赋值,但其实在堆内存中他们指向的对象并不是同一个对象。
所以,这也就解释了为什么obj不等于obj的现象。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步