参照と値のコピー

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が出力される.