2013-03-06 34 views
0

現在我正在學習JavaScript和發現了一些問題,此代碼JavaScript的不確定引發TypeError

var response = '{"status":{"message":{"-1":[111]}}}'; 
response = jQuery.parseJSON(response); 
if (typeof (response.status.warning[-1]) == "undefined") { 
    console.log(true); 
}; 

爲什麼他拋出一個錯誤,而不是僅僅忽略「的console.log」的一部分?

dafuq is this javascript

+0

嘗試改變'response.status.warning'到'response.status.message' – pktangyue 2013-03-06 08:02:05

回答

2

你需要更多的戍代碼如下:

if (response && (!response.status || !response.status.warning || typeof (response.status.warning[-1]) == "undefined") { 

檢查存在應該完成response.statusresponse.status.warning。如果response.status根本不存在,response.status.warning會產生錯誤

+0

如果「if」語句爲false,而沒有添加「else」,是否有避免將控件打印到控制檯的可能性? http://i.stack.imgur.com/m3WNC.png – MyMomSaysIamSpecial 2013-03-06 08:24:31

+0

更新,只有當你在控制檯運行腳本,嘗試「活」,一切正常,纔打印對象。 – MyMomSaysIamSpecial 2013-03-06 08:38:15

+0

這是否意味着它的工作?還是你仍然有問題? – 2013-03-06 11:57:14

1

因爲它甚至不能通過這部分得到:

typeof (response.status.warning[-1]) == "undefined" 

因爲response.status.warningundefined。這就是它拋出錯誤的原因。


要檢查是否response.status.warning存在,只有當你確信response.statusundefined

if(response.status.warning){ 
    console.log("It exists!"); 
} 
+0

我已經改變了消息,故意警告,我想看看會發生什麼如果作爲迴應將沒有「消息」 – MyMomSaysIamSpecial 2013-03-06 08:06:16

+0

@Nerfair'response.status.warning == undefined'將檢查它是否存在。 – 2013-03-06 08:08:20

+1

Javascript不喜歡訪問未定義對象的屬性。這就是爲什麼你應該總是習慣於在訪問之前檢查財產的存在。另一個答案涵蓋了這一點。 – sweetamylase 2013-03-06 08:09:49

相關問題