1

アイデアは誰でも-console.logがh2_JSONがオブジェクト{}であることを示しているのに、なぜ私のjavascriptのロジックがこの条件の「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 == {}かどうかを確認するためのチェックではないためです。そのオブジェクトかどうかを確認するためのチェックです。しかし、(このコンテキストでは)はオブジェクト初期化子であるため、それに等しい値はありません (別の空のオブジェクトでさえありません):foofoo{}

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

条件は常に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 に答える