[英]How does the Boolean return value in this JavaScript work?
我對編程很陌生,並且一直在努力自學。 我在網上遇到了以下問題,並嘗試解決它,但遇到了死胡同:
“編寫一個接受三個參數的函數,如果只有其中一個參數是真值則返回true,否則返回false。不要使用&&或||運算符或if語句。”
這讓我在過去的兩天里難過,所以我轉向了解決方案,我很難搞清楚:
function onlyOne(x, y, z) {
return (!!x + !!y + !!z === 1);
}
我理解語法,但我不理解邏輯或為什么這樣做。 有人能幫助我嗎? 我想了解代碼的工作原理,而不僅僅是記憶語法。
!!
將值轉換為實際的布爾值。 當您對布爾值執行加法時,JavaScript會將它們強制轉換為數字, false
為0
, true
為1
。
基本上, (!!x + !!y + !!z === 1)
將x
, y
和z
為true
或false
,然后將它們全部加在一起。 如果其中只有一個是真實的,則值為1
, === 1
將為真,否則為假。
這是一個示例,顯示如何添加布爾值:
console.log(false + false); // 0 console.log(false + true); // 1 console.log(true + true); // 2
!!
將您的變量“強制轉換”為一個布爾值,當通過+
運算符轉換為數字時,該布爾值只能具有值0
或1
。 如果你考慮一下,如果只有一個變量為真,你只能在將它們加在一起后得到1
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.