2016-06-28 4 views
0

Я почти уверен, что понял это раньше, но не могу вспомнить, почему это разрешает ложь. Может кто-нибудь объяснить, почему?Javascript: Сравнение двух идентичных объектных литералов

if ({foo: 'bar'} === {foo: 'bar'}) { 
    console.log("Strictly Equal"); 
} else { 
    console.log("Not Equal"); 
} 

Я также пробовал == но он все еще имеет два объектных литерала как не равных.

Благодаря

+0

Обратите внимание, что я голосую, чтобы переместить это в SO. Это не вопрос P.SE. Но, я думаю, он подходит к SO. Следовательно, я также даю быстрый ответ ... – svidgen

+0

@svidgen, возможно, вас заинтересует недавнее мета-обсуждение: [Должен ли я отвечать на вопрос, который принадлежит Stack Overflow?] (Http://meta.programmers.stackexchange.com/q/8069/31260) – gnat

+1

@gnat Действительно. Не понимал, что в этой конкретной ситуации был достигнут консенсус! – svidgen

ответ

5

== и === не выполняют глубокие сравнения. Они будут выполнять сравнения значений для типов значений. Но объекты сравниваются как ссылки. И объекты в вашем сравнении - это не тот же объект; они просто бывают одинаковыми.

+0

Правильно! Я полностью забыл == и === только сравнить значения. Ссылки будут разными, поэтому они будут разрешены как ложные. Благодарю. Это вызывало раздражение от меня, и когда я искал googled, я не мог найти хороший пример, похожий (потому что я не был уверен, что искать.) –

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