js中bool值的轉換及“&&”、“||”、 “!!”詳解
前言
首先需要知道的是,js中有6個值為false,分別是: 0, '', null, undefined, NaN 和 false, 其他(包括{}, [], Infinity)為true.
可以使用Boolean()函數(shù)或是兩次取非就能獲得對象的布爾值,例如Boolean(undefined)和!!undefined同樣能取得布爾值false,
對于0, '', null, undefined, NaN,{}, [], Infinity求布爾值,分別是false false false false false true true true.
因此我們知道的一點是:對象的布爾值是true,即使是對象{}。
bool值轉換
數(shù)據(jù)類型 | bool值轉化 |
---|---|
undefined | undefined 轉化為 false |
Object | null 轉化為false,其他為 true |
Boolean | false 轉化為 false,true 轉化為 true |
Number | 0,NaN 轉化為false,其他為 true |
String | "" 轉化為 false,其他為 true |
"&&"
javascript中“&&”運算符運算法則如下:
如果&&左側表達式的值為真值,則返回右側表達式的值;否則返回左側表達式的值。多個&&表達式一起運算時,返回第一個表達式運算為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;
上面兩句代碼的執(zhí)行結果是一樣的,之前寫代碼的時候一直用上面的方式,但是發(fā)現(xiàn)有些單測覆蓋不到,導致單測分支覆蓋率很低,換下面的方式就可以很好的解決這個問題,這兩句的效果是一樣的。
"||"
javascript中"||"運算符的運算法則如下:
如果"||"左側表達式的值為真值,則返回左側表達式的值;否則返回右側表達式的值。多個"||"表達式一起運算時,返回第一個表達式運算結果為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;
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關文章
javascript使用百度地圖api和html5特性獲取瀏覽器位置
本文介紹了javascript使用百度地圖api和html5特性獲取瀏覽器位置的小功能,大家參考使用吧2014-01-01解決Js先觸發(fā)失去焦點事件再執(zhí)行點擊事件的問題
今天小編就為大家分享一篇解決Js先觸發(fā)失去焦點事件再執(zhí)行點擊事件的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08javascript延時重復執(zhí)行函數(shù) lLoopRun.js
javascript延時重復執(zhí)行函數(shù) lLoopRun.js...2007-06-06JavaScript?映射器?array.flatMap()
這篇文章主要介紹了JavaScript?映射器?array.flatMap(),array.flatMap()是一個映射函數(shù),它接收一個數(shù)組和一個映射函數(shù),然后返回一個新的映射數(shù)組,下面進入文章了解具體內容2022-02-02