[Javascript]データ型


JavaScriptデータ型についてご紹介しましょうか?🎉
データ型の詳細については、元のタイプとオブジェクトタイプを比較し、メモリに格納する方法について説明します.
ターゲットは、オブジェクトタイプを重点的に理解し、なぜ深いレプリケーションと浅いレプリケーションが必要なのかを理解することです.

データ型


データ型とは、値の種類です.JavaScriptのすべての値にデータ型があります.
なぜデータ型が必要なのでしょうか?🤔
  • データ型が必要
    ->数値タイプの値1と文字列タイプの値「1」は似ているように見えますが、まったく異なる値です.数値タイプの値1と文字列タイプの値「1イコール」は、値を生成する目的と用途が異なります.数値タイプの値は主に算術演算に使用され、文字列タイプの値は主に画面にテキストを出力するために使用されます.また,確保すべきメモリ容量の大きさが異なり,メモリに格納されるバイナリ数も異なり,検索や解釈の仕方も異なる.
  • 整理するなら.
    1.データ型によるメモリ領域の取得と参照
    2.データ型による解析値
    この2つは、データ型の原因である可能性があります.
    JavaScript(ES 6)は、7種類のデータ型を提供します.7つのデータ型は、元のタイプとオブジェクトのタイプに分けられます.

    元のタイプとオブジェクトのタイプ

  • 元のタイプの値、つまり元の値は変更できない値です.
    対照的に、オブジェクト(参照)タイプの値、すなわちオブジェクトは変更可能な値です.
  • の元の値が変数に割り当てられた場合、その変数は実際の値を格納します.
    対照的に、オブジェクトが変数に割り当てられている場合、その変数は参照値を格納します.
  • 元の値を持つ変数が他の変数に割り当てられると、元の値がコピーされて渡されます.これを値ベースの伝達と呼ぶ.
    対照的に、オブジェクトを指す変数を他の変数に割り当てると、元のオブジェクトの参照値がコピーされて渡されます.これを参照の伝達と呼ぶ.
  • 元のタイプ(元のタイプ)


    元のタイプの値、つまり元の値は変更できない値です.すなわち、生成された元の値を読み取り専用値に変更することはできません.
    ここで変更できないのは変数ではなく、値の記述です.

    元の値は変更できない値であるため、値を直接変更することはできません.したがって、変数値を変更するために元の値を再割り当てすると、新しいメモリ領域が保持され、再割り当てされた値が保存され、変数が参照するメモリ領域のアドレスが変更されます.値のこの特性を不変性と呼ぶ.

    オブジェクトタイプ(object/reference type)


    オブジェクト(「」を参照)タイプの値、つまりオブジェクトは変更可能な値です.
    元の値を割り当てた変数がメモリのメモリアドレスからメモリ領域にアクセスする場合、元の値にアクセスできません.つまり、元の値を割り当てる変数は、元の値自体を値とします.
    ただし、割り当てられたオブジェクトの変数がメモリ内のメモリアドレスを介してメモリ領域にアクセスする場合は、参照値にアクセスできます.参照値は、作成したオブジェクトのメモリ領域を格納するアドレスとそれ自体です.

    元の値は変更できない値なので、元の値を持つ変数の値を変更するには、再割り当て以外に方法はありません.
    ただし、オブジェクトは変更可能な値です.したがって、オブジェクトを割り当てる変数は、再割り当てすることなく、オブジェクトを直接変更できます.すなわち、property自体を再割り当てせずに動的に追加、更新、削除することができる.
    オブジェクトには、これらの構造の欠点があります.元の値とは異なり、複数の識別子が1つのオブジェクトを共有できます.
    var person = {
      name: 'Lee'
    };
    
    // 참조값을 복사(얕은 복사). copy와 person은 동일한 참조값을 갖는다.
    var copy = person;
    
    // copy와 person은 동일한 객체를 참조한다.
    console.log(copy === person); // true
    
    // copy를 통해 객체를 변경한다.
    copy.name = 'Kim';
    
    // person을 통해 객체를 변경한다.
    person.address = 'Seoul';
    
    // copy와 person은 동일한 객체를 가리킨다.
    // 따라서 어느 한쪽에서 객체를 변경하면 서로 영향을 주고 받는다.
    console.log(person); // {name: "Kim", address: "Seoul"}
    console.log(copy);   // {name: "Kim", address: "Seoul"}
    最後の例を見て整理します.
    var person1 = {
      name: 'Lee'
    };
    
    var person2 = {
      name: 'Lee'
    };
    
    console.log(person1 === person2); // ① false
    console.log(person1.name === person2.name); // ② true
  • person 1変数とperson 2変数が指すオブジェクトは、内容は同じですが、異なるメモリに格納されている異なるオブジェクトです.すなわち,person 1変数とperson 2変数の参照値は全く異なる値である.従ってfalseda
  • パーセント値のperson 1を参照します.nameとpersonnameは値として評価できる式です.両方の式は、元の値「Lee」として評価されます.だから本当だ.
  • 参照)
    https://developer.mozilla.org/ko/docs/Web/JavaScript/Data_structures#%EA%B0%9D%EC%B2%B4
    https://velog.io/@surim014/%EC%9B%B9%EC%9D%84-%EC%9B%80%EC%A7%81%EC%9D%B4%EB%8A%94-%EA%B7%BC%EC%9C%A1-JavaScript%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80-part.2
    https://github.com/wjdrbs96/Today-I-Learn/blob/master/JavaScript/Primitive%20Type%20%EC%9D%B4%EB%9E%80.md
    https://codingfarm.tistory.com/441
    https://github.com/wikibook/mjs/blob/master/11.md