轉自:簡書
1、邏輯與(&&)
(1)對於布爾值,只有都為true才返回true;
(2)對於不是布爾值的情況則:
如果第一個操作數是對象,則返回第二個數
eg:var str = new Array();
console.log(str&&8);//返回值為8
如果第二個操作數是對象,則只有在第一個操作數的求值結果為true的情況下才會返回該對象。
如果第兩個操作數都是對象,則返回第二個數操作數。
如果有一個操作數是null,則返回null。
eg: console.log(8&&null);//返回結果為null
如果有一個操作數是NaN,則返回第NaN。
如果第一個操作數是undefined,則返回undefined。
2.邏輯或(||)
(1)對於布爾值,邏輯或是非常簡單的,只要有一個true,就返回true;
(2)對於不是布爾值的情況則:
如果第一個操作數是對象,則返第一個操作數
如果第一個操作數的求值結果為false,則返回第二個操作數
如果兩個操作數都是對象,則返回第一個操作數
如果兩個操作數是null,則返回null
如果兩個操作數是NaN,則返回NaN
如果兩個操作數是undefined,則返回undefined
3.邏輯非(!)
如果一個操作數是一個對象,返回false;
如果一個操作數是一個空字符串,返回false;
如果一個操作數是一個非空字符串,返回false
如果一個操作數是一個數值0,返回true;
如果一個操作數是任意的非零字符,返回false;
如果一個操作數是null,返回true;
如果一個操作數是NaN,返回true;
如果一個操作數是undefined,返回true;
注:邏輯與,邏輯非都是從左向右判斷,誰的第一個邏輯判斷為true就顯示誰,只不過邏輯非必須兩個都為true,而且誰是第一個false就顯示誰。
作者:littler7
鏈接:https://www.jianshu.com/p/b03b90d2a324
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。