常规和严格对象相等有什么区别?
在 JavaScript 中,用常规 (==) 或严格 (= ==) 相等运算符可能不会产生预期的结果。与原始数据类型不同,对象是通过其内存地址引用的。因此,仅根据它们的值进行比较是不够的。
请考虑以下代码:
var a = {}; var b = {}; console.log(a == b); // false console.log(a === b); // false
虽然 a 和 b 都是空对象,但它们的引用指向不同的内存地址。因此,常规和严格相等评估都会返回 false。
为什么这很重要?
理解这种细微差别对于确保准确的对象比较至关重要。仅当对象引用完全相同的内存地址时,才应将其视为相等。将对象分配给新变量会创建一个新引用,即使内容相同。
例如,假设我们有三个对象:a、b 和 c。
a = {} b = a c = {}
在本例中,a == a、a == b 和 a != c。这是因为 a 和 b 引用相同的内存地址,而 c 有自己唯一的引用。
结论
比较对象时,必须记住对象相等基于内存引用,而不是它们的值。常规和严格相等运算符对于对象的行为相同,并且仅当被比较的对象引用相同的内存地址时它们才返回 true。
以上是JavaScript 对象相等性:`==` 和 `===` 有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!