2016-06-28 7 views
0

私は以前これを理解していましたが、これがなぜ偽に解決するのかを覚えていないと思います。なぜ誰かが説明できますか?Javascript:2つの同一のオブジェクトリテラルを比較する

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

私はまた==を試しましたが、まだ2つのオブジェクトリテラルが等しくないとします。

おかげ

+0

私はこれをSOに移すために投票しています。これは本当にP.SEの質問ではありません。しかし、私はそれがSOに合っていると思います。したがって、私も素早い答えを与えています... – svidgen

+0

@svidgen最近のメタ討論に興味があるかもしれません:[私はスタックオーバーフローに属する質問に答えるべきですか?](http://meta.programmers.stackexchange.com/q/8069/31260) – gnat

+1

@gnatこの特定の状況についてコンセンサスがあったことを認識していませんでした! – svidgen

答えて

5

=====は深い比較を行いません。彼らは値の型の値の比較を行います。しかし、オブジェクトは参照として比較されます。そして、比較対象のオブジェクトは同じオブジェクトではありません;彼らは単に同じになる。

+0

そうですよ!私は完全に==と===値を比較することを忘れてしまった。参照は異なっているため、偽と判断されます。ありがとう。それは私からの地獄を苛立たせていました。そして、私が周りをグーグルで探検したとき、私は似たような良い例を見つけることができませんでした。 –

関連する問題