データ型
3335 ワード
JavaScriptのデータ型は大きく2種類あります.基本タイプ(オリジナルタイプ):数値、文字列、ブール値、null、undefined、構成部品 参照:オブジェクト 基本形状には不変性がある.数字10を含む基本変数aに再び数字15が含まれると、aの値は問題なく15になり、「不変」とはどういう意味ですか.
メモリに空白(@1001)を残し、識別子aを保存します. は、別の空き領域(@5001)を取得し、数字1を保存する. @1001に@5001を保存します.
識別子がストレージスペースに直接値を書き込まないのは、メモリを効率的に管理するためです.
1000個の変数を作成し、各変数に1つの数値を割り当てる場合は、この状況を考慮します.数値1を変数ごとの識別子格納スペースに割り当てるよりも、数値1を個別のスペースに一度格納し、対応するアドレスのみ入力する方が効率的でしょう.
基本型には不変性があると前に述べた.これはどういう意味ですか.変数aの数値1を指定します.次に、コンピュータはメモリ領域で数値1を検索し、ない場合は新しい空間を作成し、aに格納します. 変数aの値を2に変更します.次に、2を新しい空間に保存し、既存の1を2に置き換えるのではなく、そのアドレスをaに格納する.
1と2はまったく異なるデータで、すべて異なる値に変更することはできません.
変更は新規操作のみで行います.これが不変性です.
メモリに空白(@1001)を残し、識別子objを格納します. が別の空き領域(@5001)にデータを格納しようとすると、データは複数のパーセントのデータのセットであることが分かった.記憶グループ内のPropertyのために個別の空間を予約し、これらの空間のアドレス(@7001~)を@5001に記憶し、@5001を@1001に記憶する. 7001時、7001時property a、7002時property bを保存します. メモリ領域で数値1を検索します.したがって、このアドレスを@5003に保存し、@7001に保存してください.同様に、数字2は@5004に保存され、このアドレスは@7002に保存される.
基本型データとの違いは,格納対象のプロパティの領域が異なることである.
1.空白(@1001)を取得した後、識別子aを保存し、その他の空白(@5001)を取得し、数字10を保存し、アドレスを@1001に保存する.
2.空白(@1002)を残した後、識別子bを保存し、識別子a空間に記憶された数字10のアドレス(@5001)を@1002に保存する.
リファレンスデータ
1.空白(@1003)を保持した後、識別子objを保存し、他の空白(@5002)を保持した後、propertyグループを@5002のアドレス(@7001~)に格納し、@5002を@1003に格納する.
2.@7001はProperty c,@7002はProperty d,@7001は@5001,@7002は新しく取得した数字2は@5003を格納する.
3.空白(@1004)を保持した後、識別子obj 2を保存し、識別子obj 1(@1003)を検索し、その値@5002を@1004に保存する.
基本データと参照データの両方に同じアドレスが表示されるため、変数をコピーするプロセスは同じです.
@1001および@1002の値はいずれも@5001であり、@1003および@1004の値はいずれも@5002である.
115は、新しい空間@5004に格納され、識別子bのアドレスが検索される.@1002の値は@5004のはずです. 20を新しいスペース@5005に保存し、識別子cのアドレスを検索します.@7001の値は@5005のはずです.
違いが見えますか?基本型データの値は異なりますが、参照型データの値は異なります.
コードで表示:
これにより、メモリ内の空き領域に新しいオブジェクトが格納され、そのアドレスがobj 2に格納されます.
基本データは、値を含む浮動小数点値を参照します. 参照型データは、値を含む「鋳造値」のセットからなる「鋳造値」を参照する.
きほんデータわりあて
const a = 1;
1000個の変数を作成し、各変数に1つの数値を割り当てる場合は、この状況を考慮します.数値1を変数ごとの識別子格納スペースに割り当てるよりも、数値1を個別のスペースに一度格納し、対応するアドレスのみ入力する方が効率的でしょう.
ふへんせい
基本型には不変性があると前に述べた.これはどういう意味ですか.
let a = 1;
a = 2;
変更は新規操作のみで行います.これが不変性です.
参照によるデータの割当て
const obj = { a: 1, b: 2 };
レプリケーション変数の比較
const a = 10;
let b = a;
const obj1 = { c: 10, d: 2 };
const obj2 = obj1;
きほんデータ1.空白(@1001)を取得した後、識別子aを保存し、その他の空白(@5001)を取得し、数字10を保存し、アドレスを@1001に保存する.
2.空白(@1002)を残した後、識別子bを保存し、識別子a空間に記憶された数字10のアドレス(@5001)を@1002に保存する.
リファレンスデータ
1.空白(@1003)を保持した後、識別子objを保存し、他の空白(@5002)を保持した後、propertyグループを@5002のアドレス(@7001~)に格納し、@5002を@1003に格納する.
2.@7001はProperty c,@7002はProperty d,@7001は@5001,@7002は新しく取得した数字2は@5003を格納する.
3.空白(@1004)を保持した後、識別子obj 2を保存し、識別子obj 1(@1003)を検索し、その値@5002を@1004に保存する.
基本データと参照データの両方に同じアドレスが表示されるため、変数をコピーするプロセスは同じです.
@1001および@1002の値はいずれも@5001であり、@1003および@1004の値はいずれも@5002である.
コピー後に再割り当て
const a = 10;
let b = a;
const obj1 = { c: 10, d: 2 };
const obj2 = obj1;
b = 15;
obj2.c = 20;
コードで表示:
a !== b
obj1 === obj2
Propertyではなくオブジェクト自体を変更したらどうなりますか?const a = 10;
let b = a;
const obj1 = { c: 10, d: 2 };
let obj2 = obj1;
b = 15;
obj2 = { ...obj1 };
今回,bと同様にobj 2に新しいオブジェクトを割り当てることで直接値を変更した.これにより、メモリ内の空き領域に新しいオブジェクトが格納され、そのアドレスがobj 2に格納されます.
a !== b
obj1 !== obj2
一般に、参照型データは可変値と呼ばれ、その「可変」は、参照型データ自体および内部の輪郭を変更する場合にのみ成立する.整理する
Reference
この問題について(データ型), 我々は、より多くの情報をここで見つけました https://velog.io/@jwlee134/데이터-타입テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol