关于JavaScript的一个简短问题。我尝试在JavaScript中执行{} == {}
,期望得到true
,但实际上没有得到,我想了解为什么。难道不应该{} == {}
返回true
,而{} === {}
返回false
吗?
关于JavaScript的一个简短问题。我尝试在JavaScript中执行{} == {}
,期望得到true
,但实际上没有得到,我想了解为什么。难道不应该{} == {}
返回true
,而{} === {}
返回false
吗?
==
和===
检查的是所比较的两个变量是否是同一对象的引用,而不是它们的值是否相同。==
和===
,但两个新的对象实例则不是。JSON.stringify()
对它们进行序列化,然后检查结果是否相同。Object.compare = function(obj1, obj2) {
if (obj1 && obj2) return JSON.stringify(obj1) === JSON.stringify(obj2)
}
console.log(
Object.compare({foo:"bar"}, {foo:"bar"})
);
当使用 === 比较两个对象时,将会检查它们的引用。
这不是对同一个对象的两个引用,而是两个空对象的不同实例。
当使用 == 进行比较时,通常会在比较之前进行一些强制类型转换,遵循特定的规则,这些规则过于复杂,无法在此列出。
但长话短说,由于你正在比较两个对象,所以不会有不同的检查。