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