javascript - 为什么 {} == {} 等于 false?
问题描述
关于 JavaScript 的简短问题。我尝试{} == {}
在 JavaScript 中执行并期望得到true
,但它没有,我想了解原因。不应该{} == {}
退货true
和{} === {}
退货false
吗?
解决方案
因为==
并===
检查两个比较变量是否是对同一对象的引用,而不是它们的值是否相同。
因此,一个内部相互引用的两个变量或第三个变量都是,==
并且===
,一个对象的两个新实例不是。
要检查两个对象是否相同,您可以JSON.stringify()
检查它们并检查结果是否相同。
大多数常见的 JavaScript 库都包含一个比较两个对象的函数,在 vanilla JS 中,您可以自己制作这样一个函数:
Object.prototype.compare = function (that) {
if(this && that) return JSON.stringify(this) === JSON.stringify(that)
}
console.log({}.compare({}));
推荐阅读
- scala - 在 Java 代码中没有为配置的 finagle 找到合适的方法
- .htaccess - https 网站在没有代理的情况下无法正常加载
- c# - 之前如何获取页面?赛马林
- scala - Scala FoldLeft 函数
- python - 为什么 keras ResNet50 的第一个 maxpooling = 55x55 在论文中是 56x56?
- r - 从字符串中删除双引号,同时将其作为 R 中的参数传递
- python - Python 3 - “from __future__ import xyz”语句是否必要/有益(强调 TensorFlow)?
- python - 在 tkinter 中使用 show 参数时,如何正确使条目小部件具有占位符?
- c++ - 找到数字与给定数字相乘的最小数字
- css - 我想用css加粗一个json数据,我该怎么做?