シャローコピーについて、コピー元のオブジェクトとコピー先のオブジェクトがメモリ上の同じデータを参照するものと理解しています。
シャローコピーを行うJavaScriptのsliceメソッドやconcatメソッドは元の配列を変更しませんが、同じデータを参照しているにも関わらずコピー後の配列に変更を加えても元の配列が影響を受けないというのがいまいちピンと来ません。
そもそも違うデータの入っている配列が2つ出来てしまうのだから、その時点でメモリ上の違うデータを参照することになってしまうような気がします。
ディープコピーが非破壊的で、シャローコピーが破壊的という組み合わせなら理解できるのですが。。
かなり初歩的な質問ですが、ご教授いただけますと幸いです。
言葉だけの説明では不十分なので、あなたが説明している現象を確認可能なコードを質問文に入力してください。markdownで。
「破壊的/非破壊的」と「シャローコピー/ディープコピー」は全くの別概念と思いますが、それぞれの概念をどのように理解しているのでしょうか。
シャローコピーが同じデータを参照しているなら変更を加えると元のデータも変更されてしまい、ディープコピーはデータそのものが違っているので変更の影響を受けないという意味合いで上のように述べたのですが、シャローコピーは配列そのものの参照が同じわけではなく要素の参照が同じという点を見落としていたようです。
今後質問文にはコードを含めるようにします。ご指摘ありがとうございます。
回答1件
あなたの回答
tips
プレビュー