データ型


JavaScriptのデータ型は大きく2種類あります.
  • 基本タイプ(オリジナルタイプ):数値、文字列、ブール値、null、undefined、構成部品
  • 参照:オブジェクト
  • 基本形状には不変性がある.数字10を含む基本変数aに再び数字15が含まれると、aの値は問題なく15になり、「不変」とはどういう意味ですか.

    きほんデータわりあて

    const a = 1;
  • メモリに空白(@1001)を残し、識別子aを保存します.
  • は、別の空き領域(@5001)を取得し、数字1を保存する.
  • @1001に@5001を保存します.
  • 識別子がストレージスペースに直接値を書き込まないのは、メモリを効率的に管理するためです.
    1000個の変数を作成し、各変数に1つの数値を割り当てる場合は、この状況を考慮します.数値1を変数ごとの識別子格納スペースに割り当てるよりも、数値1を個別のスペースに一度格納し、対応するアドレスのみ入力する方が効率的でしょう.

    ふへんせい


    基本型には不変性があると前に述べた.これはどういう意味ですか.
    let a = 1;
    
    a = 2;
  • 変数aの数値1を指定します.次に、コンピュータはメモリ領域で数値1を検索し、ない場合は新しい空間を作成し、aに格納します.
  • 変数aの値を2に変更します.次に、2を新しい空間に保存し、既存の1を2に置き換えるのではなく、そのアドレスをaに格納する.
  • 1と2はまったく異なるデータで、すべて異なる値に変更することはできません.
    変更は新規操作のみで行います.これが不変性です.

    参照によるデータの割当て

    const obj = { a: 1, b: 2 };
  • メモリに空白(@1001)を残し、識別子objを格納します.
  • が別の空き領域(@5001)にデータを格納しようとすると、データは複数のパーセントのデータのセットであることが分かった.記憶グループ内のPropertyのために個別の空間を予約し、これらの空間のアドレス(@7001~)を@5001に記憶し、@5001を@1001に記憶する.
  • 7001時
  • 、7001時property a、7002時property bを保存します.
  • メモリ領域で数値1を検索します.したがって、このアドレスを@5003に保存し、@7001に保存してください.同様に、数字2は@5004に保存され、このアドレスは@7002に保存される.
  • 基本型データとの違いは,格納対象のプロパティの領域が異なることである.

    レプリケーション変数の比較

    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;
  • 115は、新しい空間@5004に格納され、識別子bのアドレスが検索される.@1002の値は@5004のはずです.
  • 20を新しいスペース@5005に保存し、識別子cのアドレスを検索します.@7001の値は@5005のはずです.
  • 違いが見えますか?基本型データの値は異なりますが、参照型データの値は異なります.
    コードで表示:
    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
    一般に、参照型データは可変値と呼ばれ、その「可変」は、参照型データ自体および内部の輪郭を変更する場合にのみ成立する.

    整理する

  • 基本データは、値を含む浮動小数点値を参照します.
  • 参照型データは、値を含む「鋳造値」のセットからなる「鋳造値」を参照する.