2015-10-20 32 views
0

我發現在JavaScript中,如果條件下,可以在中使用裸字符串。我的意思是這樣的:JavaScript中的條件 - 現場發生了什麼

var condition = ""; 
if (condition) { 
    //we will never come here 
} 

但是,這感覺很奇怪我,因爲,例如,在Java的代碼不會編譯。我試圖理解場景背後的這個字符串正在發生什麼,但現在失敗了。

你能向我解釋在這種情況下會發生什麼?

附:此外,如果變量條件根本沒有初始化,那麼它仍然很好,結果將是相同的。感覺JavaScript允許很多這些東西。

回答

0

我明白你的問題,我也來自一個強壯的鍵入背景。這裏的Javascript概念是truthyfalsy

什麼是理解此處是JavaScript使用強制類型轉換,所以

if (condition) {} 

其中condition被初始化字符串,則驗證會導致false

按照定義:虛假值是在布爾上下文中評估時轉換爲false的值。 falsy值 例子:

if (false) 
if (null) 
if (undefined) 
if (0) 
if (NaN) 
if ('') 

對JavaScript中的truthyfalsy讀有一個更好的瞭解。

0

JavaScript沒有強類型。在這種情況下,這意味着解釋器接受變量並儘可能地努力將其轉換爲布爾值。這意味着整數0,空,「」和「0」(我認爲未定義)都轉換爲false,而整數1,「1」和非空對象都轉換爲true。

0

在如果JavaScript的(條件),所述病症是表達將最終轉化爲布爾類型,語言定義undefinednullNaN0''都將被鑄造成布爾,您可以檢查使用!!運營商明確地轉換爲布爾值,檢查:

!!'' === false 
!!0 === false 
!!null === false 
!!undefined === false 
!!NaN === false 

所有上述表達式爲,除此之外,

''==0 
null==undefined 

上述表達式也是真正

所以,在你的病情,'' == 0,並且將被鑄造成

這就是javascript的魔力,它已被廣泛使用。