モダンJavaScript Day 4&5


🔖 今日の読書範囲:第4章(p.34~49)


キーワード:メモリ、メモリユニット、メモリアドレス、変数、割り当て、参照、識別子、宣言変数


ブックマーク



4.1変数
プログラミング言語は、記憶したい値をメモリに格納し、格納された値を取得することによって、再利用のために変数と呼ばれるメカニズムを提供します.
変数(Variable)とは、1つの値を格納するために保持されるメモリ領域そのものまたはそのメモリ領域を識別するために命名された名前です.
4.2識別子(識別子)
識別子とは、ある値を区別できる固有の名前です.
識別子は、値ではなくメモリアドレスを覚えています.
識別子名は変数名に限定されません.たとえば、変数、関数、クラスなどの名前は識別子です.
4.3宣言変数
変数宣言とは、変数を生成することです.
より詳細には、格納値のメモリ領域を確保(割り当て)し、格納値を準備するために変数名を格納メモリ領域のアドレスに関連付けます.
変数宣言によって取得されたメモリ領域は、解放前に保護され、解放されたメモリ領域を誰も使用しないようにするため、安全に使用できます.
var, let, const
varキーワードの変数宣言を使用して、宣言フェーズと初期化フェーズ*を同時に実行します.

  • 宣言手順:JavaScriptエンジン変数の存在を通知する変数名を登録します.

  • ≪初期化フェーズ|Initialization Stage|emdw≫:値を格納するメモリ領域を取得し、デフォルトでは定義されていない値を初期化します.
    このときundefinedは元のタイプの値(primitive value)です.
    初期化を行わない場合、保存されたメモリ領域は、以前の他のアプリケーションで使用された値を保持する可能性があります.これらの値をゴミ値と呼びます.
    変数を使用するには、宣言する必要があります.宣言されていない識別子にアクセスすると、参照エラーが発生します.これは、識別子で値を参照しようとしたが、JavaScriptエンジンに登録されている識別子が見つからなかったときに発生したエラーです.
  • 4.4変数吊り下げ
    console.log(score); // undefined
    
    var score; //변수 선언문
    
    上記のコードでは、参照エラー(ReferenceError)が発生する可能性がありますが、出力が定義されていないのは、変数宣言が実行時ではなく前のステップで最初に実行されるためです.
    変数宣言がコードのフロントエンドに昇格するように,動作のJavaScript固有の特徴を変数昇格(variablehilling)と呼ぶ.

    4.5値の割当て(割当て)
    var score; // 변수 선언
    score = 80; // 값의 할당
    演算子=を使用して割り当てます.
    変数宣言は、まずソースコード順で実行される時点実行時より前に実行され、値の割り当てはソースコード順で実行される時点実行時に実行されます.
    古い値undefinedに格納されているメモリ領域を消去し、割り当て値80をメモリ領域に再格納するのではなく、新しいメモリ領域を保持し、割り当て値80をメモリ領域に格納することに注意してください.
    4.6値の再割り当て
    var score; // 변수 선언
    score = 80; // 값의 할당
    score = 90; //값의 재할당
    割り当てられた値の新しい値を再割り当てします.
    値を再割り当てできずに変数に格納されている値を変更できない場合は、変数ではなく定数(constant,const)と呼ばれます.
    上図では、score変数の前の値undefinedおよび80には変数が含まれていないため、それらは不要です.これらの不要な値は、ゴミ収集器によって自動的にメモリから解放されます.しかし、いつ解除されるかは予測できない.
    JavaScriptはゴミ収集器を内蔵した管理言語です.
    4.7識別子命名規則
    命名規則:
  • 文字、数字、アンダーコード()、およびドル記号($)を含めることができます.
    (ex. var first-name; (x))
  • の数字で始まることはできません.
    (ex. var 1st; (x))
  • 予約語は識別子として使用できません.
    (ex. var this; (x))
  • その他の規則:
  • 変数はカンマで区切られ、1つの文で複数を一度に宣言できます.しかし、可読性のため、使用することは推奨されません.
    (ex. var person, $elem, _name, first_name, val1;)
  • javascriptは大文字と小文字を区別するので、次の変数は異なる変数です.
    (ex. var firstname; ≠ var firstName; ≠ var FIRSTNAME;)
  • の良い変数名は、注釈を必要とせずにコードの可読性を向上させることができる.(コードから学ぶ)
  • 名前付き会議:
  • キャメルキャビネット:🌟
    var firstName;
  • ヘビキャビネット:
    var snake_case;
  • パスカルキャビネット:🌟
    var FirstName;
  • ハンガリーケース:
    var strFirstName;//type+identifier
    var elem=document.getElemnetById("myId")/DOMノードvarobserviceelem=document.getElemnetById("myId")/DOMノードvar observiceelem=document.getElemnetById("myId")/DOMノードvarobservice=fromEvent(document,"click");//RxJS拡張可能
    (*クリーンコードから消えていくケースです.)
  • 🌟 通常、変数または関数の名前はcamel case、コンストラクション関数、クラス名はpascal caseを使用します.

    疑問点


  • スキャン:
    scope-範囲、余地.
    変数にアクセスできる範囲.
    ex.ローカル、グローバル...
    ➡️ 参考記事

  • 管理言語と非管理言語:
    ゴミ収集器が内蔵されている場合は、管理言語または非管理言語を使用します.

  • 予約語:
    略語
    これらの単語は、コンピュータプログラミング言語で文法的に使用されているため、識別子として使用できません.
    ex.var,this,await,voidなど...

  • Unicode:
    Unicode(英語:Unicode)は、世界中のすべての文字をコンピュータ上で統一的に表現し、処理できるようにする工業標準です.
  • 💬 に感銘を与える

  • 変数が不確定で構造的に整理されていない断片的な知識を整理できる時間である.
  • さらに
  • を加えると、メモリ、メモリユニット、メモリ割り当て部分は知らない部分であり、知る機会である.
  • 変数宣言と値の割り当ては、2つの場合に分けられ、変数宣言については、実行時以前に実行されたブート機能も理解されています.
  • 🌟 3行の概要

  • 変数が不確定で構造的に整理されていない断片的な知識を整理できる時間である.
  • さらに
  • を加えると、メモリ、メモリユニット、メモリ割り当て部分は知らない部分であり、知る機会である.
  • 変数宣言と値の割り当ては、2つの場合に分けられ、変数宣言については、実行時以前に実行されたブート機能も理解されています.