参照と値のコピー
3261 ワード
データ型の値のコピー(複製)
JavaScriptは、基本データ型(数値、文字列、boolean)の値をコピーするときに値を完全にコピーします.
したがって、"="を使用して値を簡単にコピーできます.
次に、深度コピーの例を示します.
let originalValue = 100;
let newValue = originalValue;
originalValue = 200;
alert(orginalValue);
alert(newValue);
上のソースコードでは、元の値には100の値が含まれており、newValueでは100の値がコピーされており、下図のように2つの変数OriginalValueとnewValueは完全に独立した状態となっている.この状態で、元の値を200に変更すると、元の値のみが200になります.この2つの変数は、値レプリケーションまたは深度レプリケーションと呼ばれる完全に独立しています.値のコピーや変更は、他の値には影響しません.
したがって、それぞれ200、100が出力される.
オブジェクトの参照のコピー(浅いコピー)
変数をオブジェクトに格納すると、実際の値を格納するのではなく、メモリのある場所にオブジェクトが作成され、オブジェクト(配列を含む)の参照(位置値)が格納されます.したがって、"="を使用してオブジェクトをコピーすると、参照のみがコピーされます.
次のソースコードを表示します.
let originalArray = [1,2,3,4];
let newArray = originalArray;
originalArray[0] = 200;
alert(originalArray);
alert(newArray);
[1,2,3,4]をアレイの元のアレイに格納する手順は、次のとおりです.[1,2,3,4]をアドレス値010に格納し、オブジェクトの元のArrayは0-10の位置を参照する
の場合、2列目に従って参照の位置値010をコピーします.
originalArray[0]=200を実行すると、参照位置010の値が変更されます.元のアレイとnewArrayは同じメモリ位置を参照します.したがって,2つの配列は独立していない.これを「参照放射線」または「浅い放射線」と呼びます.
したがって、newArray[0]が出力されると、両方とも200が出力される.
Reference
この問題について(参照と値のコピー), 我々は、より多くの情報をここで見つけました https://velog.io/@dudgks5846/참조-복사와-값-복사テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol