Javascript Types


ダイナミック入力(Dynamic Type)


動的言語を使用して変数を設定する場合、JavaScriptは事前にタイプを指定する必要はありません.
変数の値によってタイプが指定されるからです.
var ex1 = 42;    // ex1은 이제 Number 임
var ex2 = "bar"  // ex2는 이제 String 임
var ex3 = true   // ex3는 이제 Boolean 임

データ型


最新のECMAScript(ES)規格には7種類のデータ型があります.
  • 元データ型×6(Primitive)
  • Null (null)
  • Boolean (True/False)
  • 未定義(値指定なし)
  • Number (1, 2, 3.2, 4,-Infinity, +Infinity, NaN...)
  • String ('example')
  • Symbol:ES 6
  • が追加されました
  • 参考資料型
  • Object (+Array)
  • Function
  • 元のデータ型(Primitive Type)


    オブジェクト以外のすべての元のデータ型は可変ではありません.
    Javascriptにはstring, number, undefined, symbol, boolean, null, bigintがあります.
    var ex1 = "hello";
    console.log(ex1); // hello
    ex1 = "hi";
    console.log(ex1); // hi
    ex 1にhelloを割り当てると、文字列「hello」がメモリに書き込まれます.
    ex 1は、「hello」の文字列メモリアドレスを参照します.
    hiをex 1に後で再割り当てすると、文字列「hello」のメモリを変更せずに、新しいメモリにhiが作成され、そのアドレスが参照されます.
    これにより、異なるString値を異なるメモリに格納し、変更時に異なるメモリアドレスを参照できます.
    つまり、メモリに割り当てられたデータは変更されません.

    Boolean


    TrueとFalseの2つの値の論理タイプがあります.

    Null


    nullという名前の値しかありません.通常、どのオブジェクトも結果値に一致しないことを意味します.
    nullとundefinedの違い
    typeof null          // "object"
    typeof undefined     // "undefined"
    null === undefined   // false
    null == undefined    // true
    null === null        // true
    null == null         // true
    !null                // true
    isNaN(1 + null)      // false
    isNaN(1 + undefined) // true
    意図的なクリア値
  • は、最初からNull値
  • を割り当てる.

    Undefined


    値は未割当てを表し、値はundefinedです.

    Number


    64ビットフォーマットの整数(int)タイプはありません.+finity-finity Nanなどがあります

    String


    16ビットの符号なし整数要素の集合.

    Symbol


    ES 6に追加されたタイプで、オブジェクトのキーとして使用できます.
    一意で変更できないデフォルト値.

    構文


    Symbol([description])
    const symbol1 = Symbol();
    const symbol2 = Symbol(42);
    const symbol3 = Symbol('foo');
    
    console.log(typeof symbol1);
    // expected output: "symbol"
    
    console.log(symbol2 === 42);
    // expected output: false
    
    console.log(symbol3.toString());
    // expected output: "Symbol(foo)"
    
    console.log(Symbol('foo') === Symbol('foo'));
    // expected output: false
    ()に構成部品の説明を入力できますが、この値では構成部品にアクセスできません.

    参照タイプ


    Object


    キー(key)と値(value)の組み合わせ.
    属性はkeyによって識別されます.keyはStringまたはSymbolからなる.
    valueは、デフォルトのタイプのすべての値を指定できます.
    さまざまな組み合わせのオブジェクトを生成できます.
    ただし、キー値にSymbolを設定するとアクセスできない場合があります.(繰り返し文ではJSON.Stringify()

    Function


    特殊資料型で、補足機能があります.
    オブジェクトと見なすことができます.
    タイプ区分で機能を確認できます.

    Primitive TypeとReference Typeの違い


    つまり、メモリの使用方法とコピー方法の2つのタイプが異なります.
     let x1 = 3;
     let y1 = x1;
     y1 = 2
    
    console.log(x1) // 3
    console.log(y1) // 2
    
    let x2 = {num: 1}
    let y2 = x2
    y2.num = 3
    
    console.log(x2.num) // 3
    console.log(y2.num) // 3
    上記の例では、string(Primitive Type)がx1に割り当てられ、y1にコピーされた場合、x1, y1は、その値自体を保存するために異なるメモリを割り当てる.
    ただし、オブジェクトx2y2にコピーされると、オブジェクトは{num:1}のアドレス値を有し、メモリに格納される.
    したがって、互いに同一のオブジェクトを有するアドレス値は、それぞれx2, y2である.
    したがって、x2, y2のいずれかのnumと呼ばれるkeyvalueを修正すると、同じオブジェクトが変更される.
    このような状況は配列中にも同様に発生する.
    したがって、配列またはオブジェクトをコピーおよび操作する際にソースコードを遵守する必要がある場合は、追加の操作が必要です.

    Spread operator (...)

    let printNums = function (...arg) {
    	console.log(arg)
    }
    printNums(10,20,30); // [10,20,30]
    
    残りの演算を使用して、特定の変数として前の値以外の値を配列に読み込みます.
    let arg = [10,20,30,40];
    let newArr = [0,...arg];
    console.log(newArr);
    
    let book = {
      title: "Hello world",
      createdAt: "2020-12-07",
      author: "uom",
    }
    let newBook = {
      ...book
      author: "jaewon"
    }
    console.log(newBook) 
    // {title: "Hello world", createdAt: "2020-12-07", author: "jaewon"}
    配列またはオブジェクト内部の値を展開して割り当てます.上書きすることもできます.

    もっと勉強しなさい

  • 浅い放射と深い放射