2013-03-24 61 views
1

任何人的想法 - 爲什麼我的javascript中的邏輯落入「ELse」部分這個條件的時候,我的console.log表明h2_JSON是一個對象{} ??Javascript - 如果h2_JSON是一個對象{}(如我的console.log中所示 - 爲什麼它落入else循環中?)

if (h2_JSON == {}) 
{ 
window.location.href ='/coursecatalog/retrieveCourses/1/' + h1key; 

} 
else 
{ 
var html_output = ""; 

for (var key in h2_JSON)     
    { 

    html_output += "<a href=\"javascript:gettingLevel3(\'" + h2_JSON[key] + "\')\">" + key + "</a><br />"; 
    console.log(html_output);   
} 
} 
+1

究竟是什麼情況打算檢查? – 2013-03-24 04:51:58

+1

因爲'x == {}'是* always * false .. – 2013-03-24 04:53:51

+0

我試圖檢查h2_JSON是否返回沒有結果(即一個空的字典)---我是新來的 - 很抱歉,如果它是一個愚蠢的問題提前。如何檢查字典中是否沒有任何內容(即沒有數據從服務器返回?) – user1769203 2013-03-24 05:15:13

回答

4

因爲foo == {}不是一個檢查,看看是否foo一個對象。這是一個檢查,看看是否foo is that object。但是(在這方面){}是一個對象初始值設定項,所以沒有價值 - 甚至不是另一個空對象 - 等於它:

var a = {}, b = {}; 
a == b; // false 

的條件是總是假。

如果你想看看是否有是一個對象,你可以使用typeof(以及其他技術):

if (typeof h2_JSON === 'object') { 
    window.location.href ='/coursecatalog/retrieveCourses/1/' + h1key; 
} 
else { 
    // snip 
} 

我如何檢查,看看是否有沒有在字典(即沒有數據從服務器返回?)

如果一個對象沒有可枚舉自己的屬性,則該對象爲「空」。 Object.keys()是你的朋友在這裏。

if (Object.keys(h2_JSON).length) { 
    // it's not empty 
} else { 
    // it is empty 
} 
+0

感謝您抽出時間 – user1769203 2013-03-24 05:34:47

+0

非常歡迎您。當然,如果你從一開始就提出正確的問題,它會有所幫助。 – 2013-03-24 05:42:34

相關問題