限ることではないですが、現代の主なプログラミング言語の変数には値型と参照型というものがあります。英語でいうとプリミティブタイプとリファレンスタイプと呼ばれるようです。言語によって用語が異なるかもしれず、リファレンスタイプのことを、オブジェクト型/クラス型、と呼ぶ場合もあるようです。これは、なんだろうか、ということなのですが、説明します。値型には、数値/文字列/Boolean、などがあります。値を入れて、その内容を比較したりすることができます。自然に使える変数です。参照型は少し変な感じ対して、参照型は少し変な感じです。参照型には、オブジェクト/配列/関数、などがあります。イコールの比較」の部分を見てもらうと、イコールが一致しないことになっています。いう命令を使って文字列に変換してから比較してみました。値を入れ替えることができています。なんでしょうかこれは。参照型の仕組み仕組みを簡単に説明します。人間には見えない形でプログラム内のメモリの位置(アドレス)を示す値が入っていると、考えます。実際に入っているはずなのですが、JavaScriptの場合は、プログラマから見えないのでそのように考えるということになります。いうメモリの位置が入ってい(ると考え)ます、メモリの「xxx1」という場所には、新しいオブジェクトが作られて、そのオブジェクトの実体というか本体というか、そちらが配置されていますが、その実体というか本体を直接見る方法はありません。次のコードが実行される場合にも同じことがおきます。「xxx2」というメモリの位置が入っていることになり、そのメモリの位置には、本体があるのですが、そこは見れない状態です。イコールで比較しても、「xxx1」と「xxx2」とでは、場所が異なるので、一致しませんよ。