ECMAScript双等号(==)比较规则

在ECMAScript中,等号由双等号(= =)表示,当且仅当两个运算数相等时,它返回true。非等号是感叹号加等号(!=),当且仅当两个运算数不相等时,它返回true。为确定两个运算数是否相等,这两个运算符都会进行类型转换。

执行类型转换的基本规则如下:

    o

  1. 如果一个运算数是Boolean值,在检查相等性之前,把它转换成数字值。false转换成0,true转换成1。
  2. o

  3. 如果一个运算数是字符串,另一个是数字,在检查相等性之前,要尝试把字符串转换成数字。
  4. o

  5. 如果一个运算数是对象,另一个是字符串,在检查相等性之前,要尝试把对象转换成字符串(调用toString()方法)。
  6. o

  7. 如果一个运算数是对象,另一个是数字,在检查相等性之前,要尝试把对象转换成数字。

在进行比较时,该运算符还遵守下列规则:

    o

  1. 值null和undefined相等。
  2. o

  3. 在检查相等性时,不能把null和undefined转换成其他值。
  4. o

  5. 如果某个运算数是NaN,等号将返回false,非等号将返回true。重要提示:即使两个运算数都是NaN,等号仍然返回false,因为根据规则,NaN不等于NaN。
  6. o

  7. 如果两个运算数都是对象,那么比较的是它们的引用值。如果两个运算数指向同一个对象,那么等号返回true,否则两个运算数不等。

转载请注明原文出处《ECMAScript双等号(==)比较规则》 如无特别声明,所有文章均遵守创作共用 署名-非商业-禁止演绎 3.0协议。