2012-05-27 39 views
0

可能從一個困惑的javascript小白一個非常基本的問題...爲什麼var combined = null +「」有一個值?

爲什麼

var hasthisvalue = null; 
if (hasthisvalue) 
    print("hasthisvalue hs value"); 

var hasthatvalue = ""; 
if (hasthatvalue) 
    print("hasthatvalue has value"); 

不顯示任何信息,但如果我結合這兩種

var combined = "hasthisvalue" + "hasthatvalue"; 
if (combined) 
    print ("combined has value"); 

它呢?

或者更直接:

var combined = null + ""; 
if (combined) 
    print ("combined has value"); 

爲什麼「組合拳」有一個值,如果我只補充一點,沒有價值的兩個變量?我錯過了什麼?

+0

因爲非空字符串是真正的值。 'null +「」'是字符串'「null」'。 – MaxArt

+0

第二個,你的轉換。首先,我認爲你的意思與衆不同。 –

+0

在第一種情況下,您串聯2個字符串,而不是變量。 – Ixx

回答

3

當您將它們分別進行比較時,它們都會在if檢查中轉換爲false。當你把他們來說,null成爲字符串"null",所以他們的拼接是字符串"null",不轉換爲false

2

第2個實例是其中的值是「falsy」情況。這些值是一個鬆散比較期間等於false

  • 未定義
  • 空字符串
  • 布爾假
  • 數字0
  • 的NaN

其他值不是我n這個清單是「truthy」並等於true寬鬆比較

第三種情況,你可以在控制檯上試試。 null+''成爲字符串:"null",因此是truthy。

相關問題