くまおの森

フロントエンドで学んだこと知ったことを自分なりに噛み砕いてメモしてく技術ブログ

【JavaScript】値渡し, 参照渡し

JavaScriptの基礎編。

値渡し

プリミティブ型(基本型)だと値渡しになります。

このようにプリミティブ型を渡した変数aを

変数bに代入すると、変数aの内容が変数bにコピーされます。

f:id:naoaru-28:20170523155723p:plain

コピーされるため、メモリ番地は違う場所になります。

参照渡し

オブジェクト型だと参照渡しになります。

aには空の配列を代入しています。

bにはそのaを代入しています。

bの配列に文字列'ほげ'を入れます。

そうすると

bの配列に入れた'ほげ'がaの配列にも入っています。

値を比較すると、aとbは全く同じと出力されます。

f:id:naoaru-28:20170523175418p:plain

bはaのメモリ番地を見ている(参照している)ことになります。

オブジェクト型だと、メモリ番地は同じ場所を差すことになります。

 

何でもかんでも入れられるオブジェクト型をコピーで複製するとなると、

メモリがたくさん使われて、処理が重くなっていくため

このようにオブジェクト型は参照渡しという仕組みになってるらしいです。