一文總結(jié)JS中邏輯運(yùn)算符的特點(diǎn)
Js中的邏輯運(yùn)算符
JavaScript中有三個邏輯運(yùn)算符,&&與、||或、!非,雖然他們被稱為邏輯運(yùn)算符,但這些運(yùn)算符卻可以被應(yīng)用于任意類型的值而不僅僅是布爾值,他們的結(jié)果也同樣可以是任意類型。
描述
如果一個值可以被轉(zhuǎn)換為true,那么這個值就是所謂的truthy,如果可以被轉(zhuǎn)換為false,那么這個值就是所謂的falsy。會被轉(zhuǎn)換為false的表達(dá)式有: null、NaN、0、空字符串、undefined。
盡管&&和||運(yùn)算符能夠使用非布爾值的操作數(shù),但它們依然可以被看作是布爾操作符,因?yàn)樗鼈兊姆祷刂悼偸悄軌虮晦D(zhuǎn)換為布爾值,如果要顯式地將它們的返回值或者表達(dá)式轉(zhuǎn)換為布爾值,可以使用雙重非運(yùn)算符即!!或者Boolean構(gòu)造函數(shù)。
- &&: AND,邏輯與,expr1 && expr2,若expr1可轉(zhuǎn)換為true則返回expr2,否則返回expr1。
- ||: OR,邏輯或,expr1 || expr2,若expr1可轉(zhuǎn)換為true則返回expr1,否則返回expr2。
- !: NOT,邏輯非,!expr,若expr可轉(zhuǎn)換為true則返回false,否則返回true。
JS邏輯運(yùn)算符的特點(diǎn)
首先說一下,其他數(shù)據(jù)類型轉(zhuǎn)換為布爾類型的規(guī)則: null、undefined、0、NaN、空字符串轉(zhuǎn)換為false,其他轉(zhuǎn)化為 true。
1. 取反 !
首先把數(shù)據(jù)轉(zhuǎn)化為布爾值,然后取反,結(jié)果為 true 或 false。
<script type="text/javascript"> var a = [1,2,3]; var b = "hello"; var obj = new Object(); var d; console.log(!""); //true console.log(!d); //true console.log(!a); //false console.log(!b); //false console.log(!obj); //false </script>
2. 邏輯與 &&
JavaScript 中邏輯與和其他語言不太一樣,如果第一個操作數(shù)是 true(或者能夠轉(zhuǎn)為 true),計(jì)算結(jié)果就是第二個操作數(shù),如果第一個操作數(shù)是 false,結(jié)果就是 false(短路計(jì)算),對于一些特殊數(shù)值不遵循以上規(guī)則。(個人理解為:如果運(yùn)算的第一個操作數(shù)為true,則返回第二個操作數(shù),反之則返回第一個操作數(shù))
<script type="text/javascript">
var a = [1,2,3];
var b = "hello";
var obj = new Object();
var d;
console.log(true && 10); //第一個操作數(shù)是true,結(jié)果是第二個操作,也就是10
console.log(false && b); //第一個操作數(shù)是false,結(jié)果flase
console.log(100 && false); //第一個操作數(shù)是100,結(jié)果flase
console.log(undefined && false); //第一個操作數(shù)是undefined,結(jié)果undefined
console.log(NaN && false); //第一個操作數(shù)是NaN,結(jié)果NaN
console.log(null && false); //第一個操作數(shù)是null,結(jié)果null
console.log('' && false); //第一個操作數(shù)是空串,結(jié)果空串
console.log(0 && 100); //結(jié)果是0
console.log(5 && 100); //100
console.log(a && b); //hello
console.log(obj && 200); //200
</script>3. 邏輯或 ||
如果第一個操作數(shù)不是 false,結(jié)果就是第一個操作數(shù),否則結(jié)果是第二個操作數(shù)。如果第一個操作數(shù)能夠轉(zhuǎn)為 true,結(jié)果就是第一個操作數(shù)(個人理解為:如果運(yùn)算的第一個操作數(shù)為 true,則返回第一個操作數(shù),反之則返回第二個操作數(shù))
<script type="text/javascript">
var a = [1,2,3];
var b = "hello";
var obj = new Object();
var d;
console.log(true || 10); //第一個操作數(shù)是true,結(jié)果是第一個操作,也就是true
console.log(false || b); //第一個操作數(shù)是false,結(jié)果是第二個操作數(shù)b
console.log(100 || false); //第一個操作數(shù)是100,結(jié)果100
console.log(undefined || 9); //第一個操作數(shù)是undefined轉(zhuǎn)false,結(jié)果9
console.log(NaN || false); //第一個操作數(shù)是NaN轉(zhuǎn)false,結(jié)果第二個操作數(shù)
console.log(null || a); //第一個操作數(shù)是null轉(zhuǎn)false,結(jié)果a
console.log('' || false); //第一個操作數(shù)是空串轉(zhuǎn)false,結(jié)果第二操作數(shù)
console.log(0 || 100); //結(jié)果是100
console.log(5 || 100); //5
console.log(a || b); //a
console.log(obj || 200); //obj
</script>總結(jié)
到此這篇關(guān)于JS中邏輯運(yùn)算符特點(diǎn)的文章就介紹到這了,更多相關(guān)JS邏輯運(yùn)算符特點(diǎn)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于微信小程序?qū)崿F(xiàn)云支付那些事兒
我們在做小程序支付相關(guān)的開發(fā)時,總會遇到這些難題,下面這篇文章主要給大家介紹了關(guān)于微信小程序?qū)崿F(xiàn)云支付那些事兒,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2021-09-09
JavaScript學(xué)習(xí)筆記之DOM基礎(chǔ)操作實(shí)例小結(jié)
這篇文章主要介紹了JavaScript學(xué)習(xí)筆記之DOM基礎(chǔ)操作,結(jié)合實(shí)例形式總結(jié)分析了javascript針對dom元素節(jié)點(diǎn)、屬性的相關(guān)獲取、設(shè)置等操作技巧,需要的朋友可以參考下2019-01-01
uni-file-picker文件選擇上傳功能實(shí)現(xiàn)
這篇文章主要介紹了uni-file-picker文件選擇上傳,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-07-07
JS實(shí)現(xiàn)延遲隱藏功能的方法(類似QQ頭像鼠標(biāo)放上展示信息)
下面小編就為大家分享一篇JS實(shí)現(xiàn)延遲隱藏功能的方法(類似QQ頭像鼠標(biāo)放上展示信息),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12
微信小程序?qū)崿F(xiàn)3D輪播圖效果(非swiper組件)
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)3D輪播圖效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-09-09

