【Javascript】「参照渡し」「値渡し」について
Javascriptの「参照渡し」「値渡し」についてまとめてみた。
数値型とかオブジェクト型とか、今までごっちゃになってつかってたけど、今後はちゃんと使いわけよう。
結論
- プリミティブ型 ⇨ 値渡し
- オブジェクト型 ⇨ 参照渡し
プリミティブ型(基本型)
- 文字列型
- 数値型(一種類double型のみ)
- ブーリアン型
- null型
- undefined型(初期値を代入していない状態)
<script type="text/javascript"> var test1 = 1; var test2 = test1; test2 = 5; console.log(test1); // 1 console.log(test2); // 5 </script>
「メモリ領域のアドレス」ではなく「値」自体が代入されるので、test2とtest1は別物になる。これが値渡し。
オブジェクト型
- 配列
- 連想配列
- 関数
- その他、プリミティブ型以外
<script type="text/javascript"> var test1 = [1]; var test2 = test1; test2[0] = 5; console.log(test1); // 5 console.log(test2); // 5 </script>
「メモリ領域のアドレス」が代入されるので、test2とtest1は同じオブジェクトとなる。これが参照渡し。