一.關系操作符傳回類型(大于,大于等于,小于,小于等于)
-
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 = ;
alert(res1 < res2); //false
// res1會轉化為數值23,23 > 3
----------
var res1 = 'a';
var res2 = ;
alert(res1 < res2); //false,因為'a'轉化為了NaN
//任何操作數與NaN比較,都是false
NaN < //false
NaN >= //false
一般來說,如果一個值不小于另外個值,則一定是大于或者等于那個值。特殊情況,在與比較的時候,結果都傳回了
NaN
;
false
- 如果有一個操作數是對象,調用這個對象的valueOf()方法,得到的結果按照前面的規則進行比較。如果對象沒有valueOf()方法,則調用toString()方法,得到的結果按照前面的規則進行比較。
var res1 = {_key : };
var res2 = ;
alert(res1 < res2); //false
alert(res1 >= res2); //false
----------
var res1 = {_key : };
var res2 = {_key : };
alert(res1 >= res2); //true
alert(res1 < res2); //false
alert(res1 > res2); //false
alert(res1 <= res2); //true
- 如果操作數是布爾值,則轉化為數值,再進行比較。