美文网首页
3.5.6 关系操作符

3.5.6 关系操作符

作者: meiqiuyang | 来源:发表于2018-05-03 19:13 被阅读0次

小于(<)、大于(>)、小于等于(<=)和大于等于(>=)这几个关系操作符用于对两个值进行比较,比较的规则和数学课上学的以制。这几个操作符都返回布尔值,如下面的例子:

var result1 = 15 > 10;//true
var result2 = 15 < 10;//false

与ECMAScript中其他操作符一样,当关系操作符的操作数使用了非数值是,也要进行数据类型转换,或完成默写奇怪的操作。以下就是相应的规则:
*如果两个操作数都是数值,则执行数值比较;
*如果两个操作数都是字符串,则比较两个字符串对应的字符编码值;
*如果一个操作数是数值,则将另外一个操作数转换为一个数值,然后执行数值比较;
*如果一个操作数是对象,则调用这个对象的valueOf()方法,用得到的结果按照前面的规则进行比较。如果对象么有valueOf()方法,则调用toString()方法,并用得到的结果根据前面的规则执行比较;
*如果一个操作数是布尔值,则先将其转换为数值,然后执行比较。

奇怪的操作,例子:

var result = "Brick" < "alphabet";//true

原因是,字母B的字符编码是66,而字母a的字符编码是9。如果要真正按字母表顺序比较的话,必须将两个操作数转换为相同的大小写形式,然后再执行比较,如下面的例子:

var result = "Brick".toLowerCase() < "alphabet".toLowerCase();//false

另外一个奇怪的情况,例子:

var result = "23" < "3";//true

因为,两个操作数都是字符,所以还是按照字符编码来比较的。(2的字符编码是50,3的字符编码是51)
换种写法:

var result = "23" < 3;//false

这个时候,因为操作数中有一个操作数是数值,则将另外一个操作数也转换为数值。
但是如果字符串不能转换为数值呢?见下面的例子:

var result = "a" < 3;//false,应为a被转换成了NaN

因为,根据规则,然和操作数与NaN进行比较,结果都是false。
最后强调下,见例子:

var result = NaN < 3;//false
var result = NaN >= 3;//false

相关文章

  • 3.5.6 关系操作符

    小于(<)、大于(>)、小于等于(<=)和大于等于(>=)这几个关系操作符用于对两个值进行比较,比较的规则和数学课...

  • zookeeper集群搭建

    版本:3.5.6 解压软件包tar -zxvf apache-zookeeper-3.5.6-bin.tar.gz...

  • 3.5.5 指数操作符、3.5.6 加性操作符

    3.5.5 指数操作符 ECMAScript 7新增了指数操作符, Math.pow() 现在有了自己的操作符 *...

  • js运算符与表达式

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

  • 操作符和表达式

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

  • HQL之函数使用

    在HQL中,我们可以使用关系操作符、数学操作符、逻辑操作符、复合类型操作符以及复合类型构建器。其中,关系操作符、数...

  • JavaScript 2

    操作符 1.算数操作符 + - / * % 2.赋值操作符 += -= *= /= 3.关系操作符 > < =...

  • JavaScript高程读书笔记(2)

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

  • python数据类型之 字符串、列表、元组

    一、序列list[] 1. 序列类型操作符 成员关系操作符 in 、 not in满足成员关系返回True,...

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

    4. 操作符 4.6 关系操作符   关系操作符(<,>,<=,>=)用于对两个值进行比较,比较的规则与我们数学课...

网友评论

      本文标题:3.5.6 关系操作符

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