为什么两个相同的对象彼此不相同?
JavaScript 中的相等运算符 (==) 和严格相等运算符(===) 用于比较值。但是,在比较对象时,这些运算符的行为与您预期的不同。
考虑以下代码:
var a = {}; var b = {}; console.log(a == b); // returns false console.log(a === b); // returns false
此代码对两个表达式都记录 false,即使 a 和 b 都是空物体。这是为什么?
常规 (==) 和严格 (===) 相等之间的主要区别在于严格相等运算符禁用类型转换。由于 a 和 b 都是对象,因此在这种情况下,相等运算符的类型并不重要。
无论使用什么相等运算符,只有在比较 相同的对象时,对象比较才会计算为 true 。换句话说,给定 var a = {}, b = a, c = {};,a == a, a == b,但是 a != c.
两个不同的对象(即使它们有零个或完全相同的属性)永远不会相等。要比较两个对象属性的相等性,您可以使用 Object.is() 方法或提供的答案中概述的方法。
以上是为什么两个空 JavaScript 对象比较不相等?的详细内容。更多信息请关注PHP中文网其他相关文章!