javascriptの参照を簡単にメモ
特質すべき点ありませんw
要は代入や引数渡しをしたときの実態渡しなのか参照渡しなのか、の再確認です。
プリミティブ型の代入
- ソース
var num1 = 10; var num2 = num1; num2 = 5; console.log(num1); console.log(num2);
- 出力
10
5
普通ですね
オブジェクトの代入
- ソース
var obj1 = {name: "hoge"}; var obj2 = obj1; obj2.name = "piyo"; console.log(obj1.name); console.log(obj2.name);
- 出力
piyo
piyo
obj2のプロパティ変更がobj1にも影響してます。参照コピーですね
プリミティブ型の引数渡し
関数を定義するのもめんどうなので即時関数で渡します
- ソース
var num = 10; (function(n){ n = 5; })(num); console.log(num);
- 出力
10
関数内の変更が影響していないので、引数でもプリミティブ型はやっぱり実態渡しですね
オブジェクトの引数渡し
- ソース
var obj = {name: "hoge"}; (function(o){ o.name = 'piyo'; })(obj); console.log(obj.name);
- 出力
piyo
こちらも代入と同じくですが、オブジェクトは参照渡しです
これだけですが、自分用の再確認メモでした。