モダンJavaScript Day 4&5
4090 ワード
🔖 今日の読書範囲:第4章(p.34~49)
キーワード:メモリ、メモリユニット、メモリアドレス、変数、割り当て、参照、識別子、宣言変数
ブックマーク
4.1変数
プログラミング言語は、記憶したい値をメモリに格納し、格納された値を取得することによって、再利用のために変数と呼ばれるメカニズムを提供します.
変数(Variable)とは、1つの値を格納するために保持されるメモリ領域そのものまたはそのメモリ領域を識別するために命名された名前です.
4.2識別子(識別子)
識別子とは、ある値を区別できる固有の名前です.
識別子は、値ではなくメモリアドレスを覚えています.
識別子名は変数名に限定されません.たとえば、変数、関数、クラスなどの名前は識別子です.
4.3宣言変数
変数宣言とは、変数を生成することです.
より詳細には、格納値のメモリ領域を確保(割り当て)し、格納値を準備するために変数名を格納メモリ領域のアドレスに関連付けます.
変数宣言によって取得されたメモリ領域は、解放前に保護され、解放されたメモリ領域を誰も使用しないようにするため、安全に使用できます.
var, let, const
varキーワードの変数宣言を使用して、宣言フェーズと初期化フェーズ*を同時に実行します.
宣言手順:JavaScriptエンジン変数の存在を通知する変数名を登録します.
≪初期化フェーズ|Initialization Stage|emdw≫:値を格納するメモリ領域を取得し、デフォルトでは定義されていない値を初期化します.
このときundefinedは元のタイプの値(primitive value)です.
初期化を行わない場合、保存されたメモリ領域は、以前の他のアプリケーションで使用された値を保持する可能性があります.これらの値をゴミ値と呼びます.
変数を使用するには、宣言する必要があります.宣言されていない識別子にアクセスすると、参照エラーが発生します.これは、識別子で値を参照しようとしたが、JavaScriptエンジンに登録されている識別子が見つからなかったときに発生したエラーです.
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))
(ex. var person, $elem, _name, first_name, val1;)
(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拡張可能
(*クリーンコードから消えていくケースです.)
疑問点
スキャン:
scope-範囲、余地.
変数にアクセスできる範囲.
ex.ローカル、グローバル...
➡️ 参考記事
管理言語と非管理言語:
ゴミ収集器が内蔵されている場合は、管理言語または非管理言語を使用します.
予約語:
略語
これらの単語は、コンピュータプログラミング言語で文法的に使用されているため、識別子として使用できません.
ex.var,this,await,voidなど...
Unicode:
Unicode(英語:Unicode)は、世界中のすべての文字をコンピュータ上で統一的に表現し、処理できるようにする工業標準です.
💬 に感銘を与える
🌟 3行の概要
Reference
この問題について(モダンJavaScript Day 4&5), 我々は、より多くの情報をここで見つけました https://velog.io/@jlee0505/모던-자바스크립트-Day-4-5テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol