js中bool值的轉(zhuǎn)換及“&&”、“||”、 “!!”詳解
前言
首先需要知道的是,js中有6個(gè)值為false,分別是: 0, '', null, undefined, NaN 和 false, 其他(包括{}, [], Infinity)為true.
可以使用Boolean()函數(shù)或是兩次取非就能獲得對(duì)象的布爾值,例如Boolean(undefined)和!!undefined同樣能取得布爾值false,
對(duì)于0, '', null, undefined, NaN,{}, [], Infinity求布爾值,分別是false false false false false true true true.
因此我們知道的一點(diǎn)是:對(duì)象的布爾值是true,即使是對(duì)象{}。
bool值轉(zhuǎn)換
| 數(shù)據(jù)類(lèi)型 | bool值轉(zhuǎn)化 |
|---|---|
| undefined | undefined 轉(zhuǎn)化為 false |
| Object | null 轉(zhuǎn)化為false,其他為 true |
| Boolean | false 轉(zhuǎn)化為 false,true 轉(zhuǎn)化為 true |
| Number | 0,NaN 轉(zhuǎn)化為false,其他為 true |
| String | "" 轉(zhuǎn)化為 false,其他為 true |
"&&"
javascript中“&&”運(yùn)算符運(yùn)算法則如下:
如果&&左側(cè)表達(dá)式的值為真值,則返回右側(cè)表達(dá)式的值;否則返回左側(cè)表達(dá)式的值。多個(gè)&&表達(dá)式一起運(yùn)算時(shí),返回第一個(gè)表達(dá)式運(yùn)算為false的值,如果所有表達(dá)式運(yùn)算結(jié)果都為true,則返回最右側(cè)一個(gè)表達(dá)式運(yùn)算的值。
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í)行結(jié)果是一樣的,之前寫(xiě)代碼的時(shí)候一直用上面的方式,但是發(fā)現(xiàn)有些單測(cè)覆蓋不到,導(dǎo)致單測(cè)分支覆蓋率很低,換下面的方式就可以很好的解決這個(gè)問(wèn)題,這兩句的效果是一樣的。
"||"
javascript中"||"運(yùn)算符的運(yùn)算法則如下:
如果"||"左側(cè)表達(dá)式的值為真值,則返回左側(cè)表達(dá)式的值;否則返回右側(cè)表達(dá)式的值。多個(gè)"||"表達(dá)式一起運(yùn)算時(shí),返回第一個(gè)表達(dá)式運(yùn)算結(jié)果為true的值,如果所有表達(dá)式運(yùn)算結(jié)果都為false,否則返回最右側(cè)的表達(dá)式的值。
const aa = false || 'xx'; // aa輸出為'xx'
"!!"
"!!"將表達(dá)式進(jìn)行強(qiáng)制轉(zhuǎn)化為bool值的運(yùn)算,運(yùn)算結(jié)果為true或者false。
const aa = 'xx'; const bb = !!aa; // bb輸出為true const cc = !!(NaN || undefined || null || 0 || '' ); // cc為false;
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
微信小程序時(shí)間標(biāo)簽和時(shí)間范圍的聯(lián)動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了微信小程序時(shí)間標(biāo)簽和時(shí)間范圍的聯(lián)動(dòng)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-02-02
JS選項(xiàng)卡動(dòng)態(tài)替換banner圖片路徑的方法
這篇文章主要介紹了JS選項(xiàng)卡動(dòng)態(tài)替換banner圖片路徑的方法,涉及javascript操作文件css樣式的相關(guān)技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2015-05-05
javascript使用百度地圖api和html5特性獲取瀏覽器位置
本文介紹了javascript使用百度地圖api和html5特性獲取瀏覽器位置的小功能,大家參考使用吧2014-01-01
解決Js先觸發(fā)失去焦點(diǎn)事件再執(zhí)行點(diǎn)擊事件的問(wèn)題
今天小編就為大家分享一篇解決Js先觸發(fā)失去焦點(diǎn)事件再執(zhí)行點(diǎn)擊事件的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08
javascript延時(shí)重復(fù)執(zhí)行函數(shù) lLoopRun.js
JavaScript?映射器?array.flatMap()

