pig's diary

何でも忘れるので万年初心者ね

関数内で、引数として渡されたオブジェクト(配列、ハッシュ)の変更は、グローバルに適用される!

ふつう、関数内のできごとは、外の世界には影響しないと思うよね?
でも、配列やハッシュ(オブジェクト)は影響する!
関数内で加えたオブジェクトの変更は、外の世界にも適用される。オブジェクトなんだから、たしかに考えてみればそっかあ。でもよくこれで今まで僕やってこれたって不思議に思うよね!

var str = 'たけま';
var arr = ['yeah','hoo'];
alert(str+' : '+arr); //たけま : yeah,hoo
function array_pusher (s, a) {
	s = 'うん?';
	a.push('プッシュ!')
}
array_pusher(str, arr);
alert(str+' : '+arr); //たけま : yeah,hoo,プッシュ!