Есть несколько синтаксисов javascript, и я не понимаю, почему они работают.
1.
({} === {}) // returns false
2.
function foo() {
return
{
foo: 'bar'
}
}
function bar() {
return {
foo: 'bar'
}
}
(typeof foo() === typeof bar()) //return false again
3.
([1,2,3] == [1,2,3]); //very interesting false again
Во всех этих случаях контрольная проверка выполняется на объектах слева и справа от оператора сравнения. Это возвращает false, потому что, хотя они выглядят одинаково, они фактически являются разными экземплярами.