一.大於(>)
如果只有一個操作數是數值字符串,另一個數數值則轉換成數值後再進行比較
eg:var box = '3' > 22; //false
如果兩個操作數都是數值字符串,則只會比較字符串的第一個數
eg:
var box = '3' > '22'; //true
如果兩個操作數都是字符串,則比較字符的編碼
eg:
var box = 'a' > 'B'; //true
二.等於==
不需要任何轉換的情況下,null 和 undefined 是相等的;
3.與運算(&&)
如果兩邊的操作數有一個操作數不是布爾值的情況下,與運算就不一定返回布爾值,此
時,遵循已下規則:
1.第一個操作數是對象,則返回第二個操作數;
eg:
var box = {} && 5 //5
2.第二個操作數是對象,則第一個操作數返回 true,才返回第二個操作數,否則返回 false;
eg :
var box = (5>4) && {} // [object object]
var box = (2>4) && {} // false (當第一個是false的時候都不會對第二個進行運算直接就返回第一個的值了)
3.有一個操作數是 null,則返回 null(注意當地一個操作數不是null且值爲false時返回的是false);
eg:
var box = (5 > 4) && null; //null
var box = (3 > 4) && null; //false
var box = null && (5 > 4) ; //null
var box = null && (3 > 4) ; //null
4.有一個操作數是 undefined,則返回 undefined。
undefined && 1
undefined
1 && undefined
undefined
0 && undefined
0
邏輯與運算符屬於短路操作,顧名思義,如果第一個操作數返回是 false,第二個數不
管是 true 還是 false 都返回的 false。
三.或運算符(||)
如果兩邊的操作數有一個操作數不是布爾值的情況下,邏輯與運算就不一定返回布爾
值,此時,遵循已下規則:
1.第一個操作數是對象,則返回第一個操作數;
var box= {
toString:function(){
return 20
} || (5 > 3); //20
2.第一個操作數的求值結果爲 false,則返回第二個操作數;
var box = (4>5) || 5 //5
3.兩個操作數都是對象,則返回第一個操作數;
var box= {
toString:function(){
return 20
} || toString:function(){
return 5 //20
4.兩個操作數都是 null,則返回 null;
5.兩個操作數都是 NaN,則返回 NaN;
6.兩個操作數都是 undefined,則返回 undefined
和邏輯與運算符相似,邏輯或運算符也是短路操作。當第一操作數的求值結果爲 true,
就不會對第二個操作數求值了。