美文网首页
3.5.7 关系操作符、3.5.8 相等操作符

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

作者: Wuthier | 来源:发表于2021-04-01 09:13 被阅读0次
3.5.7 关系操作符

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

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

  • 如果操作数都是数值,则执行数值比较。
  • 如果操作数都是字符串,则逐个比较字符串中对应字符的编码。
  • 如果有任一操作数是数值,则将另一个操作数转换为数值,执行数值比较。
  • 如果有任一操作数是对象,则调用其 valueOf() 方法,取得结果后再根据前面的规则执行比较。
    如果没有 valueOf() 操作符,则调用 toString() 方法,取得结果后再根据前面的规则执行比较。
  • 如果有任一操作数是布尔值,则将其转换为数值再执行比较。
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,不相等,因为数据类型不同
      
  • 不全等操作符( !== )

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

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

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

学习下一篇文章

相关文章

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

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

  • 3.5.7 相等操作符

    确定两个变量是否相等,是编程中的一个非常中药的操作。在比较字符串、数值和布尔值的相等性时,问题还比较简单。但涉及到...

  • js运算符与表达式

    操作符 一元操作符:++,-- 算术操作符:+,-,*,/,% 关系操作符:>,<,>=,<= 相等操作符:==,...

  • 操作符和表达式

    操作符 一元操作符(++,--) 算术操作符(+,-,*,/,%) 关系操作符(>,<,>=,<=,) 相等操作符...

  • JavaScript高程读书笔记(2)

    五、操作符 算数操作符、位操作符、关系操作符、 相等操作符 一元操作符++和--:注意a+++,- 位操作符按位非...

  • 5. 从头学前端之操作符

    操作符包括算术操作符(如加号和减号)、位操作符、关系操作符和相等操作符。 一元操作符 只能操作一个值的操作符叫做一...

  • 2019-12-13 第三章:一些剩余的操作符 和 语句

    5.相等操作符 在javascript里,可以进行相等判断的有两种操作符:相等操作符‘==’和全等操作符‘===’...

  • JavaScript基本概念(操作符,语句,函数)

    操作符包括算术操作符、位操作符、关系操作符、相等操作符。操作符一般用于数值型,如果不是数值型会被转换成数值型,对象...

  • ES笔记—基础之操作符篇

    描述:用于操作数据值的操作符,包括算术操作符(如加号和减号)、位操作符、关系操作符和相等操作符。 1、一元操作符 ...

  • 第三章 JavaScript基本概念(三)

    4. 操作符   ECMA-262描述了一组用于操作数据值的操作符,包括算术操作符,位操作符,关系操作符和相等操作...

网友评论

      本文标题:3.5.7 关系操作符、3.5.8 相等操作符

      本文链接:https://www.haomeiwen.com/subject/tttbhltx.html