2012/05/02

[JavaScript] データを格納した変数を変更すると、もとのデータも変更されたりされなかったり

JavaScriptの基本なんだけど、ふとどういう挙動なのか曖昧になったので確認&メモ
  1. var test =  {  
  2.     arr: [1,2,3,4],  
  3.     bool: true,  
  4.     num: 100,  
  5.     str: 'unko',  
  6.     obj: {  
  7.      baka: 'fool',  
  8.  aho: 'idiot'  
  9.     },  
  10.     test: function(){  
  11.  //配列  
  12.  var arr = this.arr;  
  13.  arr.shift();  
  14.  //元のデータも変更される  
  15.  console.log(this.arr);//[2,3,4]  
  16.    
  17.  //真偽値  
  18.  var bool = this.bool;  
  19.  bool = false;  
  20.  //真偽値は元のデータは変更しない  
  21.  console.log(this.bool);//true  
  22.  console.log(bool);//false こっちはもちろん変更されてる  
  23.    
  24.  //数値  
  25.  var num = this.num;  
  26.  num = 99;  
  27.  //変更されない  
  28.  console.log(this.num);//100  
  29.    
  30.  //文字列  
  31.  var str = this.str;  
  32.  str = 'chinko';  
  33.  console.log(this.str);//unko  
  34.    
  35.  //オブジェクト  
  36.  var obj = this.obj;  
  37.  obj.baka = 'stupid';  
  38.  //変更されている  
  39.  console.log(this.obj.baka);//stupid  
  40.     }  
  41. }  
  42.   
  43. test.test();  
オブジェクトは参照渡し。 参考:参照型の値を変数へ代入

0 件のコメント:

コメントを投稿