JavaScript—==和===

93 阅读1分钟

一、区别

==会强制转换、===不会强制转换

1. 两个操作数类型相同时

  • 如果都为基本数据类型
    • 直接进行比较,相等为true,否则为false
  • 如果都为复杂数据类型
    • 当是同一个对象的引用时为true,否则为false
  • 特例
    • undefined == undefined → true
    • null == null → true
    • NaN == NaN → false

2. 操作数类型不相同时

  • 有一个是number类型
    • 不是number型的进行强制转换(ToNumber()
  • 有一个是Object类型
    • 将Object转换成基本数据类型(ToPrimitire()),再进行基本数据类型比较
  • 特例
    • undefined、null、NaN与任何有意义的值比较结果都为false

二、题目