変更前後の値を比較する際に、ディープコピーが使われる。 例えば、商品の管理画面を作成しているとする。 商品名や説明、金額を変更できるが、管理画面を使っている人は変更前はどんな値だったか確認しながら変更したいと思う。変更前の値と変更後の値を比較するには、変更前の値をどこかに保持しておかねばならない。そこでディープコピーが使われる。 ここでシャローコピーを使うと、新たに入力された値が、コピーしておいた値も変更してしまうことになる。 この記事ではObject.assignでのシャローコピーと、JSON.parse(JSON.stringify(obj))でのディープコピー、lodashのcloneDeepでのディープコピーを比較する。 # シャローコピーとディープコピーの違い シャローコピー(浅いコピー)はプリミティブ値(文字列、数値、真偽値、null、undefined、Symbol)をコピー