为什么 {} == {} 等于 false?

Why does {} == {} equals false?

关于 JavaScript 的简短问题。我试图在 JavaScript 中执行 {} == {} 并期望得到 true,但它没有,我想了解为什么。 {} == {} return true{} === {} return false 不应该吗?

当使用 === 比较两个对象时,将检查引用。

这不是对同一对象的两个引用,而是一个空对象的两个不同实例。

与==比较时,通常在比较之前可能会对某些常见类型进行一些强制转换,遵循过于复杂而无法在此处列出的特定规则。

但长话短说,因为您是在比较两个对象,所以不会有不同的检查。

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

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

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

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

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

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