js不常見的運算符用法 (>、==、&&、||)

一.大於(>)

如果只有一個操作數是數值字符串,另一個數數值則轉換成數值後再進行比較

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,
就不會對第二個操作數求值了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章