js中的bool值轉換及"&&" 、"||"、 "!!"詳解

bool值轉換

數據類型 bool值轉化
undefined undefined 轉化爲 false
Object null 轉化爲false,其餘爲 true
Boolean false 轉化爲 false,true 轉化爲 true
Number 0,NaN 轉化爲false,其餘爲 true
String "" 轉化爲 false,其餘爲 true

"&&" : 遇到「假」愛就返回

javascript中「&&」運算符運算法則以下:javascript

返回遇到的第一個假值(null, undefined, NaN, false, '', 0)或者最後一個值。
若是&&左側表達式的值爲真值,則返回右側表達式的值;不然返回左側表達式的值。多個&&表達式一塊兒運算時,返回第一個表達式運算爲false的值,若是全部表達式運算結果都爲true,則返回最右側一個表達式運算的值。
const aa = {'name': 'xx'};
const bb = aa && aa.age; // bb輸出爲undefined;
let cc;
const dd = cc && cc.name ? cc.name : undefined; // dd輸出爲undefined
const dd = cc && cc.name; // dd輸出爲undefined;
上面兩句代碼的執行結果是同樣的,以前寫代碼的時候一直用上面的方式,可是發現有些單測覆蓋不到,致使單測分支覆蓋率很低,換下面的方式就能夠很好的解決這個問題,這兩句的效果是同樣的。

"||" :遇到「真」愛就返回

javascript中"||"運算符的運算法則以下:java

返回遇到的第一個真值或者最後一個值。
若是"||"左側表達式的值爲真值,則返回左側表達式的值;不然返回右側表達式的值。多個"||"表達式一塊兒運算時,返回第一個表達式運算結果爲true的值,若是全部表達式運算結果都爲false,不然返回最右側的表達式的值。
const aa = false || 'xx'; // aa輸出爲'xx'

"!!"

"!!"將表達式進行強制轉化爲bool值的運算,運算結果爲true或者false。
const aa = 'xx';
const bb = !!aa; // bb輸出爲true
const cc = !!(NaN || undefined || null || 0 || '' ); // cc爲false;

個人博客即將搬運同步至騰訊雲+社區,邀請你們一同入駐:https://cloud.tencent.com/dev...算法

相關文章
相關標籤/搜索