1

任何想法 - 为什么我的 javascript 中的逻辑在我的 console.log 显示 h2_JSON 是一个对象 {} 时落入此条件的“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);        
}
}
4

1 回答 1

4

因为foo == {}不是检查是否foo对象。检查是否foo那个对象。但是(在这种情况下){}是一个对象初始化器,所以没有值——甚至没有另一个空对象——等于它:

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
}
于 2013-03-24T04:50:10.213 回答