質問: {x:2,y:2}; print(b.x);//1 ``` 上記のソースは、オブジェクトの値を加算しても、別の変数に複製したオブジェクトの参照も加算されているところと、aが参照しているオブジェクトを別のオブジェクトの参照に変更しているところです。 参照型変数などの動作は、理解できていますがこれを説明する際に、値型変数と参照型変数の動作を比較する書籍(パーフェクトjavascript 111p)の一節が理解できないので質問しました。 "二つの比較を見て、値型変数は異なる変数から別の変数の値の変更が見えず、参照型変数は変更が見えると勘違いしないでください" この一節が何を言っているのかいまいち理解できません。読解力の問題なのか構成の問題なのかこの文章がどこに対しての説明なのかもあやふやです。いったいどういうことなのでしょうか。
回答: 始めのソースでは、b による変更が a にも影響を及ぼしています。 次のソースでは、a を変更しても b は変更されません。 値型の例がありませんが、a b をどのように変更してももう片方には影響を及ぼさないでしょう。 ・値型では片方を変更してももう片方は変わらない ・参照型では片方のメンバーを変更するともう片方も変わる 以上の二点だけ見て、「参照型にすると代入によって二つの変数が対になる。そして、片方を変更するともう片方も変わる」と理解する人がいます。 参照自体を変える例を出すことにより、それが間違いであることを知らせたかったのだと思います。