JavaScript高阶程序设计第三版笔记-操作符03

关系操作符

  • 在比较字符串时,实际比较的是两个字符串中对应位置的每个字符的字符编码
  • 任何操作数与NaN进行关系比较,结果都是false

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

在这个例子中,字符串Brick被认为小于字符串alphabet,原因是字母B的字符编码为66,而小写字母a的字符编码是97

如果要按照字母表的顺序比较字符串,就必须把两个操作数都转换为相同的大小写形式(全部大写或全部小写),然后再进行比较,如下所示:

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

通过将这两个操作数都转换为小写的形式,就可以得出alphabet按字母表顺序排在Brick之前的正确判断了

相等操作符

    最早在ECMAScript中的相等和不等操作符在执行比较之前,先将对象转换成相似类型。

    最后,ECMAScript提供两组操作符:相等和不相等——先转换再比较,全等和全部等——仅比较不转换

相等和不相等

在转换不同的数据类型时,相等和不相等操作符遵循下列基本规则:

  • 如果有一个操作数是布尔值,则在比较相等性之前先将其转换为数值——false转换为0,true转换为1
  • 如果一个操作数是字符串,另一个操作数是数值,在比较相等性之前先将字符串转换为数值
  • 如果一个操作数是对象,另一个操作数不是,则调用对象的valueOf()方法,用得到的基本类型数值按照前面的规则进行比较,这两个操作符在进行比较时则要遵循下列规则:
  •         null和underfined是相等的
  •         要比较相等性之前,不能将null和underfined转换成其他任何值
  •         如果有一个操作数是NaN,则相等操作符返回false,不相等操作符返回true
  •         即使两个操作数都是NaN,相等操作符也返回false,因为按照规则,NaN不等于NaN
  •         如果两个操作数都是对象,则比较他们是不是同一个对象。如果两个操作数都指向同一个对象,则相等操作符返回true,否则返回false

全等(===)和不全等(!==)

除了在比较之前不转换操作数之外,全等不全等与相等不相等操作符额没有什么区别

var result1=("55" == 55);    //true  因为转换后相等

var result2=("55" === 55);   //false 因为不转换数据类型不相等

null == underfined会返回true,因为他们是类似的值,但null===underfined会返回false,因为他们是不同类型的值

由于相等和不相等操作符存在类型转换问题,而为了保持代码中数据类型的完整性,推荐使用全等和不全等操作符

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值