# JavaScript趣味题 #18

> 导出时间: 2025/8/29 14:53:34

## 题目

输出是什么？

## 代码

```javascript
function checkAge(data) {
  if (data === { age: 18 }) {
    console.log('You are an adult!')
  } else if (data == { age: 18 }) {
    console.log('You are still an adult.')
  } else {
    console.log(`Hmm.. You don't have an age I guess`)
  }
}

checkAge({ age: 18 })
```

## 选项

A. A: `You are an adult!`
B. B: `You are still an adult.`
C. C: `Hmm.. You don't have an age I guess` ✅

## 正确答案

**C**

## 答案解析

在测试相等性时，基本类型通过它们的值（value）进行比较，而对象通过它们的引用（reference）进行比较。JavaScript 检查对象是否具有对内存中相同位置的引用。

题目中我们正在比较的两个对象不是同一个引用：作为参数传递的对象引用的内存位置，与用于判断相等的对象所引用的内存位置并不同。

这也是 `{ age: 18 } === { age: 18 }` 和 `{ age: 18 } == { age: 18 }` 都返回 `false` 的原因。

---

*本题目来源于JavaScript趣味题集合*
*导出工具: JavaScript趣味题网页版*
