似乎下面的代码应该返回 true,但它返回 false。
var a = {};
var b = {};
console.log(a==b); //returns false
console.log(a===b); //returns false
这有什么意义?
最佳答案
常规 (==
) 和严格 (===
) 之间的唯一区别是严格相等运算符禁用类型转换。由于您已经在比较两个相同类型的变量,因此使用哪种相等运算符并不重要。
无论您使用常规相等还是严格相等,对象比较仅在true
比较完全相同的对象时才计算得出。
即给定 var a = {}, b = a, c = {};
, a == a
, a == b
,但是 a != c
。
两个不同的对象(即使它们都具有零个或完全相同的属性)永远不会进行平等比较。如果需要比较两个对象的属性是否相等,this question has very helpful answers .
关于javascript - 为什么两个相同的对象彼此不相等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11704971/