JAvascriptカーネル集約332.Primitive Type(元のデータ型)



Primitive Type(元のデータ型)


非オブジェクトデータ型は、元のデータ型(primitive type)または元のデータ型と呼ばれます。


これらのデータはオブジェクトでもメソッドでもありません.元のデータ型以外のすべてのデータ型はオブジェクトです.
元の値には7種類のタイプが含まれています
  • string,
  • number,
  • bigint,
  • boolean,
  • undefined,
  • symbol,
  • null
    あります.(上記の元の値のデフォルト値は簡単ですが、スキップします.)
  • 元の値は変更されません


    元の値の特徴の1つは「不変」です.
    var bar = "baz";
    console.log(bar);        // baz
    
    bar.toUpperCase();
    console.log(bar);        // baz
    
    var foo = [];
    console.log(foo);        // []
    
    foo.push("plugh");
    console.log(foo);        // ["plugh"]
    
    bar = bar.toUpperCase(); // BAZ
    barの大文字を文字列メソッドtoUpperCaseで置き換えてみましたが、変更はありません.
    しかしfoo配列にpushを用いてplughを挿入すると変化した.
    オブジェクトとは異なり、これらの元の値は「変更」できません.
    fooは配列(すなわち元の値)ではないため、変更できます.
    でもbar=bar.toUpperCase()出力BAZ.
    これは、この値が「再割り当て」されているため、置換されている可能性があります.
    🤔ここで奇妙な点は、オブジェクトではなく元の値で方法を使用する方法です.
    元の値は再割り当てで変更できますが、元のオブジェクトに割り当てられた関数で、toUpperCaseメソッドを使用して元の値(barと呼ばれます)を処理します.元ならおかしいですがjavascriptは「柔軟な」言語であることを常に知っておく必要があります^^.
    元の値を変更するために、JavaScriptの作成者は元のRapperオブジェクトを作成しました.

    元のRapperオブジェクト(オブジェクトラッピング)


    元の値がメソッドまたはプロパティにアクセスしようとすると、元のタイプに一致する追加機能を提供する特殊なオブジェクト「元のRapperオブジェクト」が作成されます.
    Rapperオブジェクトごとに提供される方法も異なります.元の値を使用しようとすると、Repperオブジェクトの内部プロセスが元の値を単純に保つため、メソッドが呼び出されることがあります.
  • nullおよびundefinedを除いて、すべての元の値は元の値をマッピングするオブジェクトを有する.
  • RapperオブジェクトのvalueOf()メソッドは元の値を返します.
  • ただし、元の値にメソッドを追加することはできません.
  • 「元の値自体を元の値を割り当てる変数と混同しないことが重要です.」
    変数は新しい値を再割り当てできますが、オブジェクト、配列、関数とは異なるため、作成された元の値を変換することはできません.🤗
    以下に、少し異なる例を示します.
    let foo = 5;
    let foo2 = 2;
    
    function addTwo(num) {
       num += 2;
    }
    
    function addTwo_v2(foo) {
       foo += 2;
    }
    
    foo2++;
    console.log(foo2);  // 7
    
    addTwo(foo);
    console.log(foo);   // 5
    
    addTwo_v2(foo);
    console.log(foo2);   // 3
    foo 2の場合は演算子として理解できます
    ただし、addTwo、addTwo v 2の演算子を使用し、foo値は変更されません.
    これは、関数の内部スキャン内で計算されるパラメータが、コピーではなくグローバル領域参照fooであるためである.

    関数の引数はコピーです。

  • 関数の構文を実行する前に、JavaScriptは元の伝達パラメータ(元の値)をコピーすることによってローカルコピーを作成します.
  • これらのコピーは、関数のスキャン範囲内にのみ存在し、関数定義で指定された識別子によってアクセスできます.(つまり、パラメータとして渡されるnumは、グローバル領域のfooではなく、addTwoにコピーされる領域変数のfooである.)
  • の元の値を直接処理しないため、グローバル領域の元の値は元の値に接触せず、コピーを取得して操作を続行するため、変更されません.
  • 新しい価格を手に入れたいなら
    関数に「foo=num」の値を再割り当てする必要があります.

    Primitive Type(元のデータ型)


    「銀は変わらない」という知識を得て終わります~