首页 > 解决方案 > 为什么 {} == {} 等于 false?

问题描述

关于 JavaScript 的简短问题。我尝试{} == {}在 JavaScript 中执行并期望得到true,但它没有,我想了解原因。不应该{} == {}退货true{} === {}退货false吗?

标签: javascriptequals-operator

解决方案


因为=====检查两个比较变量是否是对同一对象的引用,而不是它们的值是否相同。

因此,一个内部相互引用的两个变量或第三个变量都是,==并且===,一个对象的两个新实例不是。

要检查两个对象是否相同,您可以JSON.stringify()检查它们并检查结果是否相同。

大多数常见的 JavaScript 库都包含一个比较两个对象的函数,在 vanilla JS 中,您可以自己制作这样一个函数:

Object.prototype.compare = function (that) {
  if(this && that) return JSON.stringify(this) === JSON.stringify(that)
}

console.log({}.compare({}));


推荐阅读