JavaScript中的对象比较:为什么{} !== {}以及如何正确比较?
大家好!我刚开始学习JavaScript,遇到了一个令人困惑的情况。我试图比较两个看起来完全相同的对象,但得到了false。
这是我的代码:
```javascript
const user1 = { name: '安娜', age: 25 };
const user2 = { name: '安娜', age: 25 };
console.log(user1 === user2); // false
console.log(user1 == user2); // 也是false
```
我原本期望结果是true,因为属性和它们的值都匹配!但JavaScript说它们不同。为什么会这样?
我理解对于数字和字符串,这是正常工作的:
```javascript
console.log(5 === 5); // true
console.log('你好' === '你好'); // true
```
但对于对象却不是这样。我尝试通过JSON.stringify进行比较:
```javascript
console.log(JSON.stringify(user1) === JSON.stringify(user2)); // true
```
但有人告诉我这不是好方法,特别是当对象包含functions或dates时。请告诉我如何根据内容正确比较对象?是否有内置的