关系操作符
关系操作符包括:小于(<)、大于(>)、小于等于(<=)、大于等于(>=)
比较规则:
1.如果两个操作符都是数值,则执行数值比较;
2.如果两个操作数都是字符串,则比较两个字符串对应的字符编码值;
3.如果一个操作数是数值,则将另一个操作数转换为一个数值,然后执行数值比较;
4.如果一个操作符是对象,则调用这个的对象的valueOf()方法,用得到的结果按照前面的规则执行比较。如果对象没有valueOf()方法,则调用toString()方法,并用得到的结果根据前面的规则执行比较;
5.如果一个操作符是布尔值,则先将其转换为数值,然后再执行比较;
代码示例:
//因为两个操作数是字符串,而字符串比较的时字符编码("2"的字符编码是50,而"3"的字符编码是51),所以是true
var result = "23" < "3";
//"23"转换成数值,然后比较,false
var result = "23" < 3
//根据规则,任何操作数与NaN进行关系比较,结果都是false。
var result = NaN < 3
var result = NaN >= 3
相等操作符
==,===和!=,!==的区别是:前者是先转换再比较,后者是只比较不转换
在转换不同的数据时,相等和 不相等操作符遵循下面的规则:
1.如果有一个操作符是布尔值,则比较之前先将其转换为数值—false转换为0,而true转换为1;
2.如果一个操作符是字符串,另外一个是数值,在比较之前先将字符串转换为数值 3.如果一个操作符是对象,另外一个不是,则调用对象的valueOf()方法,用得到的原始值按照前面的规则进行比较;
4.null和undefined是相等的;
5.要比较相等性之前,不能将null和undefined转换成其他任何值;
6.NaN != NaN //true
记住:null == undefined会返回true,因为它们是类似的值;但null === undefined会返回false,因为它们是不同类型的值。
由于相等和不相等操作符存在类型转换问题,而为了保持代码中数据类型的完整性,推荐使用全等和不全等操作符
如果觉得此篇文章对您有帮助,希望可以请我喝雪碧!