[JS基礎]如何使用邏輯運算子&& 和 - Medium
文章推薦指數: 80 %
“[JS基礎]邏輯運算子&& 和||如何使用” is published by Johnny in Johnny ... 但猛然一看還是會覺得怪怪的,用這篇文章記錄一下&&和||的邏輯和用法。
GetunlimitedaccessOpeninappHomeNotificationsListsStoriesWritePublishedinJohnny的轉職工程師筆記[JS基礎]如何使用邏輯運算子&&和||PhotobyJamesHarrisononUnsplash&&和||是寫出簡潔程式碼的好幫手,最近自學時越來越常看到用&&和||的寫法,雖然不會看不懂,但猛然一看還是會覺得怪怪的,用這篇文章記錄一下&&和||的邏輯和用法。
在運用邏輯運算子之前要先了解何謂truthy和falsy:TruthyandFalsyFalsy就是你傳入Boolean()會回傳false的值:console.log(Boolean(false))//falseconsole.log(Boolean(0))//falseconsole.log(Boolean(‘’))//falseconsole.log(Boolean(null))//falseconsole.log(Boolean(undefined))//falseconsole.log(Boolean(NaN))//falseTruthy則是會回傳true,所有不是falsy的都是truthy:console.log(Boolean(true))//trueconsole.log(Boolean(1))//trueconsole.log(Boolean('Hello'))//trueconsole.log(Boolean([1,2,3]))//trueconsole.log(Boolean({name:'Johnny'}))//true在if…else中可以使用truthy和falsy來判斷trueorfalse,滿常用到的是去判斷陣列中是否有元素:constarr=[]console.log(arr.length)//0if(arr.length){console.log('thereissomethinginarray')}else{console.log('emptyarray')}//emptyarray這樣程式比寫arr.legnth===0...簡潔一些。
也可以用ternaryoperator寫的更精簡一些:constmessage=arr.length?'thereissomethinginarray':'emptyarray'console.log(message)就像Boolean()和if…else一樣,邏輯運算子&&和||是根據truthy和falsy去運作的。
&&如何運作x&&y&&z&&....從左邊到右邊,回傳第一個是falsy的值,若全部皆為truthy,則回傳最後一個值。
簡單舉例:constnumber=10&&50&&0&&3console.log(number)//0constnumberTwo=10&&50&&100&&3console.log(numberTwo)//3第一個例子因為0是falsy,所以number的值是0,第二個例子所有的數字都是truthy,所以numberTwo回傳3。
||如何運作x||y||z||....基本上就是跟&&相反:從左邊到右邊,回傳第一個是truthy的值,若全部皆為falsy,則回傳最後一個值。
簡單舉例:constnumber=1||2||3console.log(number)//1constnumberTwo=0||15console.log(numberTwo)//15constnumberThree=0||undefined||nullconsole.log(numberThree)//nullnumber因為第一個就是truthy了,直接回傳1。
numberTwo第一個數字是0(falsy),第二個數字15(truthy),回傳15。
numberThree全部都是falsy,回傳最後一個值null。
實際應用需要取得localStorage資料,如果沒有則回傳空陣列:constlist=JSON.parse(localStorage.getItem('someKey'))||[]這樣寫可以省掉非常多的程式碼去寫if…else2.陣列不是null也不是空陣列才去對陣列做map:constnumbers=nullconstnumbersTwo=[1,2,3]functionmultiplyTen(numbers){returnnumbers!==null&&numbers.length?numbers.map(number=>number*10):[]}multiplyTen(numbers)//[]multiplyTen(numbersTwo)//[10,20,30]很常遇到要串連多個判斷式的狀況,這時候用&&搭配ternaryoperator就可以寫出非常簡潔的程式碼。
有時候會覺得有點腦袋轉不過來,但其實就像以前寫excelformula,&&就是AND,||就是OR。
AND需要全部的條件都是true才會回傳true,OR只需要一個條件是true就會回傳true了。
參考資料:How&&and||OperatorsReallyWorkinJavaScript--MorefromJohnny的轉職工程師筆記非本科轉職網頁工程師筆記 — 記錄學習前端與後端開發心得ReadmorefromJohnny的轉職工程師筆記AboutHelpTermsPrivacyGettheMediumappGetstartedJohnny37FollowersLearninghowtocodeandhowtobuildawesomeproducts!FollowMorefromMedium404answernotfound18What’snewwithReact18?YonatanKraAgoodcaseforEvalinJavaScriptJacobyMcCannInverseDataFlow — React.jsNickZayatzinCirtualSharingSCSSandReactstylingwithSCSSModulesHelpStatusWritersBlogCareersPrivacyTermsAboutKnowable
延伸文章資訊
- 1js中&& 和|| 运算符的用法 - 简书
我在平时写js代码时,一般也就使用&&和||判断true和false,最近在看别人的js源码时,出现了大量的&&和||,一下子转不过弯来,因此重新看了下&&和||的 ...
- 2js中&& 和|| 的用法 - CSDN博客
js中的&& 和|| 一直以为是php那一套,上网查了一些资料,才发现不一样a() && b() :如果执行a()后返回true,则执行b()并返回b的值;如果执行a()后 ...
- 3Javascript中的邏輯運算子 - iT 邦幫忙
expr1 || expr2: or,兩邊的運算式只要一邊為true即可。 !expr: not,!true=false, !false=true. logical operators 一般是用...
- 4JavaScript中的&&与||的用法(不用在判断布尔值上)
如题所述,JavaScript中&&和||可以用在普通的语句中,但是具体没有理解透它们的机制,求讲解,谢谢!类似这样var orResult = a || b|| c;var ...
- 5運算式與運算子- JavaScript
然而, && 和 || 運算子實際上是回傳兩指定運算元之一,因此用於非布林型態值時,它可能會回傳一個非布林 ... 下列範例示範了 in 運算子的一些用法。