前端手写代码面试题
目录

实现一个函数 isEqual(a, b),判断两个值是否相等(考虑深层比较)

· 约 3 分钟读完 · 第 46 / 125 章

推荐答案

本题详细解读

1. 基本类型比较

  • 使用 === 严格相等运算符来比较基本类型的值(如 number, string, boolean 等)。
  • 如果 a 和 b 严格相等,直接返回 true。

2. 处理 null 和 undefined

  • 如果 a 或 b 是 null 或 undefined,直接比较它们是否相等。
  • 这样可以避免后续的类型判断错误。

3. 类型不一致的情况

  • 如果 a 和 b 的类型不一致,直接返回 false。

4. 数组的深层比较

  • 如果 a 和 b 都是数组,首先比较它们的长度是否相等。
  • 如果长度不相等,直接返回 false。
  • 如果长度相等,递归比较每个元素是否相等。

5. 对象的深层比较

  • 如果 a 和 b 都是对象,首先比较它们的键的数量是否相等。
  • 如果键的数量不相等,直接返回 false。
  • 如果键的数量相等,递归比较每个键对应的值是否相等。

6. 其他情况

  • 对于其他情况(如函数、Symbol 等),直接返回 false。

7. 递归调用

  • 在数组和对象的比较中,递归调用 isEqual 函数来实现深层比较。

8. 边界情况

  • 该函数可以处理大多数常见的数据结构,但对于循环引用的情况可能会出现问题。在实际应用中,可能需要进一步处理循环引用的情况。