JavaScriptでは、プリミティブな値は値渡し、オブジェクトは参照渡しになっているので、挙動を再確認し、オブジェクトの値渡しの方法を残しておく。
プリミティブな値を変数に代入する場合
プリミティブな値(数値、文字列、nullなど)の場合は、値渡しと呼ばれている。
下記のサンプルコードでは、変数bに変数aを代入し、変数aを変更している。
変数bには影響がない。
オブジェクトを変数に代入する場合
オブジェクト(配列も含む)の場合は、参照渡しと呼ばれている。
上との違いは、変数aがオブジェクトかどうかの違いで、変数aの変更が変数bにも反映されている。
参照渡しをシャローコピーと呼び、値渡しをディープコピーと呼ばれたりする。
参照渡しだと、予期せぬ変数書き換えが発生するため、注意が必要だ。
オブジェクトを値渡しにする方法
オブジェクトの場合に、値渡しにするにはスプレッド構文を用いた、以下の方法が良い。
参考リンク
JavaScriptに参照渡し/値渡しなど存在しない – Qiita
https://qiita.com/yuta0801/items/f8690a6e129c594de5fb