可能重複:
What is the !! (not not) operator in JavaScript?爲什麼在使用&&時兩個!!在IF語句中?
我期待通過一些代碼,看看IF語句看起來像下面的一個。誰能告訴我爲什麼有兩個!!而不是一個?我從來沒有見過這個,也無法在Google上挖掘任何東西,因爲它忽略了特殊字符。
if (!!myDiv && myDiv.className == 'visible') {
}
可能重複:
What is the !! (not not) operator in JavaScript?爲什麼在使用&&時兩個!!在IF語句中?
我期待通過一些代碼,看看IF語句看起來像下面的一個。誰能告訴我爲什麼有兩個!!而不是一個?我從來沒有見過這個,也無法在Google上挖掘任何東西,因爲它忽略了特殊字符。
if (!!myDiv && myDiv.className == 'visible') {
}
double not操作符用於將變量投射到boolean
類型。 dobule nots互相取消,但看到!
返回true
或false
,您只能得到兩個輸出中的一個。
例如,
!!0 == true
所以
!!myDiv == true
施放myDiv
爲布爾,並測試其對真實的。 !!myDiv
只會給true
或false
。
雙重爆炸(!!
)將該值轉換爲true布爾值。第一砰「不是的」潛在truthy/falsy值到合適的布爾值,第二個「不是的」回值應該是什麼樣的合適的布爾值。
!!
將脅迫任何對象爲布爾值。它將評估爲真正的非僞造值。但它不是魔術,它只是一個雙重的不是。
!!false === false
!!true === true
!!0 === false
!!parseInt("foo") === false // NaN is falsy
!!1 === true
!!-1 === true // -1 is truthy
!!"" === false // empty string is falsy
!!"foo" === true // non-empty string is truthy
!!"false" === true // ...even if it contains a falsy value
!!window.foo === false // undefined is falsy
!!null === false // null is falsy
!!{} === true // an (empty) object is truthy
!![] === true // an (empty) array is truthy; PHP
!! myDiv意味着操作員的兩倍! (等於不)。
myDiv似乎是一個類!!myDiv導致一個布爾值(false或true),並且又一次!會再次顛倒這個布爾值(不會導致類實例(指針))。
你也可以寫(myDiv!= null)。
我個人更喜歡myDiv!= null但是!! myDiv更短。
這是double bang運算符 - 它將myDiv轉換爲布爾值。
哇,很酷。根據Jam的回答挖掘出這個鏈接。 http://www.bennadel.com/blog/1784-Using-Double-Not-Operator-For-Boolean-Type-Casting.htm – mrtsherman 2012-02-10 15:46:19
爲什麼這在問題中給出的例子中甚至是必要的?「if」條件的謂詞已被解釋爲布爾值。另外,'!! 0!== true',因爲'0'是虛假的。 – 2013-01-08 17:14:28