JS#4変数(2)
5206 ワード
TIL(Today I Learned) 🧑🏻💻
4.変数(2)
4.4 変数宣言の実行点と変数エスケープ
console.log(score); // undefined
var score; // 변수 선언문
ReferenceErrorが表示されるように見えますが、エラーは発生せず、Undefindが出力されます.
console.log(score); // undefined
var score; // 변수 선언문
変数宣言(宣言フェーズと初期化フェーズ)は、まずソースコードの前のフェーズで実行され、1行1行のシーケンス実行時(runtime)ではありません.
JavaScriptエンジンは、実行時(runtime)の前にソースコードで変数宣言を含むすべての宣言(変数宣言、関数宣言など)を検索して実行します.
変数宣言がコードの先頭に引き上げられるように,動作のJavaScript固有の特徴を変数エスケープ(variablehilling)と呼ぶ.
変数宣言に加えてvar、let、const、function、function*、classキーワード宣言を使用するすべての識別子(変数、関数、クラスなど)は反発します.
4.5 割当値
var score; // 변수 선언
score = 80; // 값의 할당
var score = 80; // 변수 선언과 값의 할당
変数宣言と値割当てを1つの文に簡略化しても、JavaScriptエンジンは変数宣言と値割当てを2つの文に分けて実行します.console.log(score); // undefined
var score; // 변수 선언
score = 80; // 값의 할당
console.log(score); // 80
変数宣言は、まずソースコード順で実行される時点実行時より前に実行され、値の割り当てはソースコード順で実行される時点実行時に実行されます.以前の値undefinedに格納されていたメモリ領域を消去し、割り当て値80をメモリ領域に再格納するのではなく、新しいメモリ領域を保持し、割り当て値80をメモリ領域に格納することに注意してください.
4.6 値の再割り当て
var score = 80; // 변수 선언과 값의 할당
score = 90; // 값의 재할당
varキーワードとして宣言された変数は、宣言と同時にundefinedに初期化されるため、厳密には、初めて変数に値を割り当てることも実際には再割り当てされる.変数を再割り当てすると、新しいメモリ領域が得られ、そのメモリ領域に数値が格納されることに注意してください.
4.7 識別子命名規則
1つのドアは複数の変数を宣言できますが、可読性が悪くなり、推奨されません.
ミーティングの名前付け
// 카멜 케이스(camelCase)
var firstName;
// 스네이크 케이스(snake_case)
var first_name;
// 파스칼 케이스(PascalCase)
var FirstName;
新しい用語のクリーンアップ
≪ゴミ収集器(ゴミ収集器)|Garbage Collector(Garbage Collector)|oem_src≫:アプリケーションの割当て(割当て)のメモリ領域を定期的にチェックすることで、識別子を参照しないメモリを解放(解放)します.JavaScriptは、ゴミ収集器でメモリの漏洩を防止します.
メモリリーク:コンピュータプログラムは、不要なメモリを消費し続けます.割り当てられたメモリを使用して蓄積が返されない場合は、メモリが浪費されます.
非管理言語(Unmanaged language):メモリ制御機能を提供する言語(ex:c,c+...).パフォーマンスは確保できますが、逆に致命的なエラーが発生する可能性があります.
管理言語(Managed language):メモリを直接制御できない言語(ex:javascript...);一定の生産性は保証できるが、性能面では一定の損失を受けなければならない.
参考文献
*現代JavaScript Deep Dive(JavaScriptの基本概念と動作原理)/李雄模
Reference
この問題について(JS#4変数(2)), 我々は、より多くの情報をここで見つけました https://velog.io/@chillihc/JavaScript-모던-자바스크립트-Deep-Dive로-배우는-JS-4-변수2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol