2012/05/02

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

JavaScriptの基本なんだけど、ふとどういう挙動なのか曖昧になったので確認&メモ
var test =  {
    arr: [1,2,3,4],
    bool: true,
    num: 100,
    str: 'unko',
    obj: {
     baka: 'fool',
 aho: 'idiot'
    },
    test: function(){
 //配列
 var arr = this.arr;
 arr.shift();
 //元のデータも変更される
 console.log(this.arr);//[2,3,4]
 
 //真偽値
 var bool = this.bool;
 bool = false;
 //真偽値は元のデータは変更しない
 console.log(this.bool);//true
 console.log(bool);//false こっちはもちろん変更されてる
 
 //数値
 var num = this.num;
 num = 99;
 //変更されない
 console.log(this.num);//100
 
 //文字列
 var str = this.str;
 str = 'chinko';
 console.log(this.str);//unko
 
 //オブジェクト
 var obj = this.obj;
 obj.baka = 'stupid';
 //変更されている
 console.log(this.obj.baka);//stupid
    }
}

test.test();
オブジェクトは参照渡し。 参考:参照型の値を変数へ代入

0 件のコメント:

コメントを投稿