JS

直观理解

偏向于转换成number

两等号的类型转换规则

  • 布尔值转换:当布尔值参与比较时,true 会被转换为 1,而 false 会被转换为 0

  • 字符串和数字:如果一个操作数是字符串且另一个是数字,则首先将字符串转换为数字,然后进行比较。

  • 对象与基础数据类型:如果一个操作数是对象,另一个是基础数据类型(如数字、字符串或布尔值),则对象会通过其 valueOf()toString() 方法尝试转化为基础数据类型,再进行比较。

  • NaN 比较:任何与 NaN 进行的比较,包括 NaN 自身,都返回 false。NaN 与任何值都不相等。

  • 特殊情况

    • 空字符串 ("") 与 0 比较时,空字符串会被转换为 0。
    • 如果两个操作数都是对象,那么只在它们引用同一对象时才返回 true。

示例

  • []==![]结果为true
  • 先做右边运算, 结果式false
  • false转为0
  • 左边[]调用toString()转为空字符串'', 空字符串转为0