javascript高级程序设计之相等操作符

来源:互联网 发布:网络优化工程师 知乎 编辑:程序博客网 时间:2024/06/01 15:28

在涉及到对象的比较时,ECMAScript提供两组操作符:相等和不相等-----先转换再比较,全等和不全等-------仅比较而不转换

1,相等和不相等

ECMAScript中的相等操作符由两个等于号(==)表示,如果两个操作数相等,则返回true,而不相等操作符由叹号后跟等于号(!=)表示,如果两个操作数不相等,则返回true.这两个操作符都会先转换操作数(通常为强制转型),然后再比较它们的相等性.

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

如果有一个操作数是布尔值,则在比较相等性之前先将其转换为数值---false转换为0,而true为1;

如果一个操作数是字符串,另一个操作数是数值,在比较相等性之前先将字符串转换为数值;

如果一个操作数是对象,另一个操作数不是,则调用对象的valueof()方法,用等到的原始值按照前面的规则进行比较;

这两个操作符在进行比较时则要遵循下列规则

null和undefined是相等的

要比较相等性之前,不能将null和undefined转换成其他任何值.

如果有一个操作数是NaN,则相等操作符返回false,而不相等操作符返回true.重要提示:即使两个操作数都是NaN,相等操作符也返回false;因为按照规则,NaN不等于NaN.

如果两个操作数都是对象,则比较它们是不是同一个对象.如果两个操作数都指向同一个对象,则相等操作符返回true,否则,返回false;

特殊情况比较结果:

null == undefined//true

"NaN" == NaN//true

5 == NaN  //false

NaN == NaN //false

NaN != NaN //true

false == 0 //true

true == 1 //true

true == 2 //false

undefined == 2 //false

null == 0  //false

"5" == 5 //true

2全等和不全等

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

全等操作符由3 个等号(===)表示,它只在两个操作数未经转换就相等的情况下返回true,

"55" == 55; //true

"55" === 55;  //false

在这个例子中,第一个比较使用的是相等操作符比较字符串"55"和数值55,结果返回了true.如前所述,这是因为字符串"55"先被转换成了数值55,然后再与另一个数值55进行比较.第二个比较使用了全等操作符,以不转换数值的方式比较同样的字符串和值.在不转换的情况下,字符串当然不等于数值,因此结果就是false.

不全等操作符由一个叹号后跟两个等号(!==)表示,它在两个操作数未经转换就不相等的情况下返回true.

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

0 0
原创粉丝点击