元、参照、コピー
jsは、基本タイプ(primitive)と参照タイプ(reference)に分けることができる.
基本タイプはNumber、String、Boolean、undefined、nullなどがあります.これらの値は本質的に単純であり,複数の値からなる複合値では表すことができない.基本タイプはjsで利用可能なデータと情報の最も簡単な形式である.すべての基本タイプには値を表す文字方式があります.テキストとは、コードに直接入力された名前や価格、すなわち値自体など、変数に格納されていない値を指します.
参照タイプは、オブジェクト(object)などの参照タイプのインスタンスです.参照タイプはobject、array、functionなどがあります.デフォルトのタイプは値自体を格納し、リファレンスタイプはオブジェクトが存在するメモリ上の位置を指すポインタを格納します.
デフォルトタイプ変数muhanとdojeonの値自体は格納され、参照タイプの1つである配列に割り当てられたエラーsignalとright signalはアドレスを格納します.ここで値の変化やコピーをしたらどうなりますか?
今回は参照タイプをコピーし、変形します.
right signalは、エラーsignalの配列(値)をコピーするのではなく、その配列を格納するアドレスをコピーする(stage 2).したがって,エラーのsignalとright signalは第2段階で同一アドレスを指す変数となり,第3段階の修正過程でright signalに追加される「~~」も必ずエラーのsignalの影響を受ける.
基本タイプはNumber、String、Boolean、undefined、nullなどがあります.これらの値は本質的に単純であり,複数の値からなる複合値では表すことができない.基本タイプはjsで利用可能なデータと情報の最も簡単な形式である.すべての基本タイプには値を表す文字方式があります.テキストとは、コードに直接入力された名前や価格、すなわち値自体など、変数に格納されていない値を指します.
参照タイプは、オブジェクト(object)などの参照タイプのインスタンスです.参照タイプはobject、array、functionなどがあります.デフォルトのタイプは値自体を格納し、リファレンスタイプはオブジェクトが存在するメモリ上の位置を指すポインタを格納します.
let muhan = 'infinity';
let dojeon = 'challenge';
let right_signal = ['muhan', 'dojeon', '!']
let wrong_signal = ['mu', 'ya', 'ho']
上の図に示すように、変数を宣言するときは次のようにします.デフォルトタイプ変数muhanとdojeonの値自体は格納され、参照タイプの1つである配列に割り当てられたエラーsignalとright signalはアドレスを格納します.ここで値の変化やコピーをしたらどうなりますか?
// 1
console.log(muhan); // 'infinity'
console.log(dojeon); // 'challenge'
// 2
muhan = dojeon;
console.log(muhan); // 'challenge'
console.log(dojeon); // 'challenge'
// 3
muhan = '무한';
console.log(muhan); // '무한'
console.log(dojeon); // 'challenge'
muhanという変数をコピーしたり変更したりしても、dojeonという変数の値は変わりません.基本タイプはコピー値そのものなので.上記の手順は、次のようにグラフ形式で表示されます.今回は参照タイプをコピーし、変形します.
// 1
console.log(right_signal); // ['muhan','dojeon','!']
console.log(wrong_signal); // ['mu','ya','ho']
//2
right_signal = wrong_signal
console.log(right_signal); // ['mu','ya','ho']
console.log(wrong_signal); // ['mu','ya','ho']
//3
right_signal.push('~~')
console.log(right_signal); // ['mu','ya','ho','~~']
console.log(wrong_signal); // ['mu','ya','ho','~~']
修正されていないエラー信号も変化していることも確認できます.参照タイプは、オブジェクトが存在するメモリ内の位置、すなわちそのアドレスを指すためです.上の過程は下のグラフで見ると分かりやすいです.right signalは、エラーsignalの配列(値)をコピーするのではなく、その配列を格納するアドレスをコピーする(stage 2).したがって,エラーのsignalとright signalは第2段階で同一アドレスを指す変数となり,第3段階の修正過程でright signalに追加される「~~」も必ずエラーのsignalの影響を受ける.
Reference
この問題について(元、参照、コピー), 我々は、より多くの情報をここで見つけました https://velog.io/@whdid502/원시참조-자료형과-복사テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol