私はJavaScriptの同一性等価演算子について多くの説明を見てき===
ましたが、Java などの他の言語における同一性等価性について私たちが理解していることほど正確ではないようです。
基本型 (数値、文字列など) の===
ようです。true を返すと、2 つの変数の型と値が同じかどうかが示されます。ただし、必ずしも同じ ID (同じオブジェクトへの参照) である必要はありません。ただし、配列とマップの場合はそうです。以下に、混乱を招く例をいくつか示します。
s1 = 'a' + '1'
s2 = 'a' + '1'
s1 === s2 // true, even they actually reference two different
objects in memory which suppose to be different identities.
a1 = [1,2]
a2 = [1,2]
a1 === a2 // false, as they reference two different objects in memory, even their values are the same.
誰かが私の理解が正しいことを確認できますか? また、Javascript の文字列に対する実際の同一性等価チェックもあります。つまり、上記の例でs1 === s2
返す必要がありますか?false