javascript で参照型

どうもinappeです。
内定先インターンのお手伝いをしていて、jsのオブジェクトを扱う際に参照型で嵌ったのでメモ。
chromeのコンソールでごにょごにょやっていきたいと思います。

検証


コンソールに次のようなコードを打ってみます。

var data, data1;
data = data1 = {"hoge":"huga"};
data.hoge = "foo";
data1.hoge = "boo";
console.log(data);
console.log(data1);

結果

Object {hoge: "boo"}
Object {hoge: "boo"} 

あれれ、感覚的にはdataには "foo" ,data1には "boo" が入ってほしいところです。が、どちらのオブジェクトも "boo" になっていますね。
これがまさに参照渡しというものです。振る舞いとしては値を渡しているのではなく、値を格納しているメモリ上の場所を渡しているんですね。
そのために、今回の例でいうとdata = data1 ={"hoge":"huga"}のところで同じ場所を参照するようになっているのでdata, data1どちらか一方を上記のように書き換えたとしてもどちら側にも変更が反映されてしまっているんのですね。
これを知っていないと、えwなんでwwってなっちゃいます( ;∀;)
ちなみにこれは配列でも同じです。基本ですがものすごく大切なことですね。
うん、おわりw