每日前端夜话第351篇
作者:疯狂的技术宅
正文共:2400 字
预计阅读时间:7 分钟
比较 JavaScript 中的值非常简单,只需用相等运算符即可,例如严格相等运算符:
1'a' === 'c'; // => false
21 === 1; // => true
但是对象却有结构化的数据,所以比较起来比较困难。在本文中,你将学习如何正确比较 JavaScript 中的对象。
1. 引用比较
JavaScript 提供了 3 种方法来对值进行比较:
严格相等运算符
===
宽松相等运算符
==
Object.is()
函数
当使用上述任何一种方法比较对象时,只有在比较的值引用了相同的对象实例时,比较的结果为 true
。这就是参照相等性。
让我们定义对象 hero1
和 hero2
,并查看实际中的参照相等性:
1const hero1 = {
2 name: 'Batman'
3};
4const hero2 = {
5 name: 'Batman'
6};
7
8hero1 === hero1; // => true
9hero1 === hero2; // => false
10
11hero1 == hero1; // => true
12hero1 == hero2; // => false
13
14Object.is(hero1, hero1); // => true
15Object.is(hero1, hero2); // => false
hero1 === hero1
的计算结果为 true
,因为两个操作数均指向了同一个对象实例 hero1
。
另一方面,hero1 === hero2</