3.5.7 关系操作符、3.5.8 相等操作符

2021-04-01  本文已影响0人  Wuthier
3.5.7 关系操作符

关系操作符执行比较两个值的操作,
包括小于( < )、大于( > )、小于等于( <= )和大于等于( >= )。

在将它们应用到不同数据类型时也会发生类型转换和其他行为:

3.5.8 相等操作符

ECMAScript提供了两组操作符:

  1. 等于和不等于( == )

    如果操作数相等,则会返回 true 。
    不等于操作符用叹号和等于号( != )表示,如果两个操作数不相等,则会返回 true 。
    这两个操作符都会先进行类型转换(通常称为强制类型转换)再确定操作数是否相等。

    在转换操作数的类型时,相等和不相等操作符遵循如下规则:

    • 如果任一操作数是布尔值,则将其转换为数值再比较是否相等。 false 转换为 0, true 转换
      为 1。
    • 如果一个操作数是字符串,另一个操作数是数值,则尝试将字符串转换为数值,再比较是否
      相等。
    • 如果一个操作数是对象,另一个操作数不是,则调用对象的 valueOf() 方法取得其原始值,再
      根据前面的规则进行比较。

    在进行比较时,这两个操作符会遵循如下规则:

    • null 和 undefined 相等。
    • null 和 undefined 不能转换为其他类型的值再进行比较。
    • 如果有任一操作数是 NaN ,则相等操作符返回 false ,不相等操作符返回 true 。记住:即使两个操作数都是 NaN ,相等操作符也返回 false ,因为按照规则, NaN 不等于 NaN 。
    • 如果两个操作数都是对象,则比较它们是不是同一个对象。如果两个操作数都指向同一个对象,则相等操作符返回 true 。否则,两者不相等。

    下表总结了一些特殊情况及比较的结果:

    null == undefined // true
    "NaN" == NaN // false
    5 == NaN // false
    NaN == NaN // false
    NaN != NaN // true
    false == 0 // true
    true == 1 // true
    true == 2 // false
    undefined == 0 // false
    null == 0 // false
    "5" == 5 // true
    
  1. 全等和不全等

    • 全等操作符( === )

      只有两个操作数在不转换的前提下相等才返回 true。

      let result1 = ("55" == 55); // true,转换后相等
      let result2 = ("55" === 55); // false,不相等,因为数据类型不同
      

虽然 null == undefined 是 true (因为这两个值类似),但 null === undefined 是false ,因为它们不是相同的数据类型。

学习下一篇文章

上一篇下一篇

猜你喜欢

热点阅读