2014-07-05 30 views
0

我想檢查我的json數據是否爲null/undefined。我有以下代碼,但它似乎跳過檢查並直接進入else如果爲空ELSE - If Else的正確語法

if (events === null) { 
    container.append(nano(nogig)); 
} else { 
    events[0].start.good_date = good_date(events[0].start.date); 
    container.append(nano(template, events[0])); 
} 

385線在此的jsfiddle

http://jsfiddle.net/5WQxq/

+0

爲什麼您使用===而不是==? – Kritner

+3

@Kritner:請參閱[this](http://stackoverflow.com/questions/359494/does-it-matter-which-equals-operator-vs-i-use-in-javascript-comparisons)瞭解原因。 – djikay

+0

沒錯,但是如果沒有對事件進行某種轉換,「null」的類型如何等於(events)null?使用===運算符,您的對象會按原樣進行比較?正如布爾所說,應該讓你獲得預期的結果。另請閱讀:http://stackoverflow.com/questions/5113374/javascript-check-if-variable-exists-is-defined-initialized-which-method-is-b我認爲它涉及幾乎相同的問題, ve hit – Kritner

回答

3
if (!events) { 
      container.append(nano(nogig)); 
     } else { 
      events[0].start.good_date = good_date(events[0].start.date); 
      container.append(nano(template, events[0])); 
     } 

此檢查null和undefined。

+1

對於'0','false','NaN'和''''。 –

+0

@FelixKling好耶,但他只需要null和undefined .. – Typo

+0

如果你只想匹配'null'和'undefined',條件應該是類似'events === null || events === undefined' –

1

如果使用==運營商,而不是運營商===然後對null測試也將匹配undefined。即undefined == null將返回true,而undefined === null將返回false。所以,試試這個:

if (events == null) { 

演示:http://jsfiddle.net/5WQxq/1/

另外,您可以明確地測試這兩個值:

if (events === null || events === undefined) { 

或者,你可以測試一個falsy值:

if (!events) { 

(...也可以匹配false0,空字符串和NaN,但這些值不太可能適用,並且在任何情況下,如果它們確實發生,您仍然希望if大小寫匹配。)