JavaScriptでオブジェクトを値渡しにする方法

JavaScriptでオブジェクトを値渡しにする方法

JavaScriptでは、プリミティブな値は値渡し、オブジェクトは参照渡しになっているので、挙動を再確認し、オブジェクトの値渡しの方法を残しておく。

プリミティブな値を変数に代入する場合

プリミティブな値(数値、文字列、nullなど)の場合は、値渡しと呼ばれている。

下記のサンプルコードでは、変数bに変数aを代入し、変数aを変更している。
変数bには影響がない。

 

オブジェクトを変数に代入する場合

オブジェクト(配列も含む)の場合は、参照渡しと呼ばれている。

上との違いは、変数aがオブジェクトかどうかの違いで、変数aの変更が変数bにも反映されている。

 

参照渡しをシャローコピーと呼び、値渡しをディープコピーと呼ばれたりする。

参照渡しだと、予期せぬ変数書き換えが発生するため、注意が必要だ。

オブジェクトを値渡しにする方法

オブジェクトの場合に、値渡しにするにはスプレッド構文を用いた、以下の方法が良い。

 

参考リンク

JavaScriptに参照渡し/値渡しなど存在しない – Qiita
https://qiita.com/yuta0801/items/f8690a6e129c594de5fb

 

Web技術カテゴリの最新記事