JavaScript操作符之关系操作符

举报
青年码农 发表于 2022/08/24 22:41:50 2022/08/24
【摘要】 关系操作符执行比较两个值的操作,包括小于(<)、大于(>)、小于等于(<=)和大于等于(>=),用法跟数学课上学的一样。这几个操作符都返回布尔值。 这个没什么好说的,学过数据的都知道。 let a = 1let b = 2let&nb...

关系操作符执行比较两个值的操作,包括小于(<)、大于(>)、小于等于(<=)和大于等于(>=),用法跟数学课上学的一样。这几个操作符都返回布尔值

这个没什么好说的,学过数据的都知道。


   
  1. let a = 1
  2. let b = 2
  3. let c = 3
  4. console.log(a > b)
  5. console.log(a < b)
  6. console.log(a + b <= c)
  7. console.log(a + b >= c)

上面这种是针对数值的判断,但是现实中可能不这么美好,有时需要不同类型的也需要判断。


   
  1. console.log("q" > "b")
  2. console.log({} > "b")
  3. console.log({} > [])
  4. console.log(true > false)

那么则遵循:

  • 如果操作数都是数值,则执行数值比较。

  • 如果操作数都是字符串,则逐个比较字符串中对应字符的编码。

  • 如果有任一操作数是数值,则将另一个操作数转换为数值,执行数值比较。

  • 如果有任一操作数是对象,则调用其 valueOf()方法,取得结果后再根据前面的规则执行比较。如果没有 valueOf()操作符,则调用 toString()方法,取得结果后再根据前面的规则执行比较。

  • 如果有任一操作数是布尔值,则将其转换为数值再执行比较。

很多人搞不懂字符串是怎么比较的,对字符串而言,关系操作符会比较字符串中对应字符的编码,而这些编码是数值。比较完之后,会返回布尔值。

比如小写a对应的字符编码是097,小写z对应的字符编码是122:


   
  1. console.log("a" < "z")  // true
  2. console.log(065 < 090)  // true

还有种情况是,如果一方是字符串(非数字字符串),另一方是数字


   
  1. console.log("a" < 3)  
  2. console.log("a" >= 3)

根据上面规则,有一方是数字,另一方要转为数值,但是a不能转为数值,只能转为NaN,这里就有个很有意思的问题,我们常识是,如果一个数a不小于另外一个b,那么这个b一定大于等于a,但是在这里,我们通过控制台发现。


   
  1. console.log("a" < 3)   // false
  2. console.log("a" >= 3)  // false

所以这里要重点记下,任何值和NaN比较时,都会返回false。

文章来源: blog.csdn.net,作者:NMGWAP,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/NMGWAP/article/details/125066898

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。