2013-03-24 1 views
1

Любые идеи - почему логика в моем javascript попадает в часть «ELse» это условное, когда мой console.log показывает, что h2_JSON является объектом {} ??Javascript - Если h2_JSON - это объект {} (как показано на моей консоли.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

Именно это условие предназначено для проверки? –

+1

Потому что 'x == {}' is * always * false .. – 2013-03-24 04:53:51

+0

Я пытаюсь проверить, не вызвал ли h2_JSON никаких результатов (т. Е. Пустой словарь) --- Я новичок в этом - извините, если это глупый вопрос заранее. Как проверить, нет ли в нем слова (т. Е. Данные не были возвращены с сервера?) – user1769203

ответ

4

Поскольку foo == {} не проверяется, чтобы увидеть, если foo является объект. это проверка, чтобы увидеть, если foo is что объект. Но (в этом контексте) {} является инициализатором объекта, так что нет никакого значения - даже еще один пустой объект - равное ему:

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

условия является всегда лжи.

Если вы хотите увидеть, если что-то объект, вы можете использовать typeof (среди других методов):

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

Как проверить, не имеет ли он ничего в словаре (ie данные не были возвращены с сервера?)

Объект «пуст», если он не имеет перечислимых собственных свойств. Object.keys() - ваш друг здесь.

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

СПАСИБО за то, что вы нашли время – user1769203

+0

Вы очень желанны. Конечно, это помогает, если вы зададите правильный вопрос с самого начала. –

Смежные вопросы