tweeeetyのぶろぐ的めも

アウトプットが少なかったダメな自分をアウトプット<br>\(^o^)/

javascriptの参照をテスト

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

こちらも代入と同じくですが、オブジェクトは参照渡しです

これだけですが、自分用の再確認メモでした。