一.关系操作符返回类型(大于,大于等于,小于,小于等于)
var result1 = 15 > 13; //true
var result2 = 15 < 13; //false
- 这几个操作符返回的都是布尔型
二.如果2个操作数都是数值,则按照普通的数值比较
三.如果2个操作时不全是数值,则会有以下规则
- 如果两个操作数都是字符串,则比较两个字符串
对应(两个字符串中对应位置的每个字符)
的字符编码值
var res1 = 'alpha go';
var res2 = 'Backhome';
alert(res1 > res2); //true
//字母B的字符编码66,字母a的字符编码是97
----------
var res1 = 'alpha go';
var res2 = 'Backhome';
alert(res1.toLowerCase() > res2.toLowerCase()); //false
----------
var res1 = '23';
var res2 = '3';
alert(res1 < res2); //true
//'2'的字符编码是50,'3'的字符编码是51
- 如果一个操作数是数值,则会把另个操作数转化为一个数值,然后进行数值比较
var res1 = '23';
var res2 = 3;
alert(res1 < res2); //false
// res1会转化为数值23,23 > 3
----------
var res1 = 'a';
var res2 = 3;
alert(res1 < res2); //false,因为'a'转化为了NaN
//任何操作数与NaN比较,都是false
NaN < 10 //false
NaN >= 10 //false
一般来说,如果一个值不小于另外个值,则一定是大于或者等于那个值。特殊情况,在与
NaN
比较的时候,结果都返回了false
;
- 如果有一个操作数是对象,调用这个对象的valueOf()方法,得到的结果按照前面的规则进行比较。如果对象没有valueOf()方法,则调用toString()方法,得到的结果按照前面的规则进行比较。
var res1 = {_key : 12};
var res2 = 10;
alert(res1 < res2); //false
alert(res1 >= res2); //false
----------
var res1 = {_key : 12};
var res2 = {_key : 11};
alert(res1 >= res2); //true
alert(res1 < res2); //false
alert(res1 > res2); //false
alert(res1 <= res2); //true
- 如果操作数是布尔值,则转化为数值,再进行比较。