モダンJavaScript Deep Dive-4章
4237 ワード
整理する
1.変数
すべてのアプリケーションは、複雑に見える場合でも、最終的にデータを受信し、新しいデータをエクスポートします.
これらのデータを処理するには変数が必要です.
const sum = 10 + 20;
// 위의 식을 자바스크립트가 만났을 때 해석하기위해 필요한 것
// 1. 10, 20이라는 리터럴에 대한 의미
// 2. + 연산자에 대한 의미
// 연산은 CPU
// 데이터저장은 memory
// 위의 식을 자바스크립트가 만났을 때 해석하는 방법
// 1. 10과 20인 숫자리터럴을 메모리의 임의의 공간에 2진수 형태로 저장한다. ( 이때 저장된 메모리주소를 기억해둔다 )
// 2. CPU에서 메모리주소를 읽어서 연산결과를 만들어내고 연산결과를 임의의 메모리공간에 2진수 형태로 저장한다.
// 3. 이때 30이 저장된 메모리공간을 반환해줘서 sum이라는 변수에 이진수형태로 30이 저장된 메모리공간의 주소가 저장된다.
この場合、sum
は変数と呼ばれ、変数は1つの値を格納するために保持されるメモリ空間そのものを意味する.簡単に言えば、位置値のシンボル名です.
JavaScript
は、C
またはC++
のポインタのようにメモリ領域に直接アクセスできません.할당
:変数に値を格納する動作(借用または保存とも呼ばれる)참조
:変数に格納された値を読み出す動作식별자
:どの値を識別できるかを示す名前(変数名、関数名、クラス名など)2.変数の宣言
変数宣言とは、格納された値のメモリ領域を取得し、変数名とメモリ領域をマッピングする動作です.
変数宣言に従って取得されたメモリ領域は、変数が解放される前に、誰も使用できないように保護されます.
変数宣言には、
var
、let
、const
などが使用されます.2.1変数宣言フェーズ
변수선언단계
:変数名を登録しJavaScriptエンジンで存在を通知변수초기화단계
:変数undefined
に初期値を入れます2.2値の割当て
変数に値を割り当てるには
3.コード解析
JavaScriptは、コードを解釈する際に
코드평가단계
と런타임
である.코드평가단계
:コードが有効であることを検証すると、エスケープ런타임
:1行のコードを実行するには新しいメモリ領域に値を入れ、メモリのアドレスを変更します.
すなわち、以下の例では、第1の
v
および最後のv
は、異なるメモリ領域を指す.console.log(v); // undefined
var v; // 변수 선언 ( 코드평가단계에서 실행... 호이스팅 )
v = 10; // 값의 할당 ( 런타임에서 실행 )
console.log(v); // 10
4.変数とゴミ収集器の再配分
変数再割り当てとは、変数に値を変更する動作です.
var v = 10; // 변수 선언과 변수 초기화
v = 20; // 변수 재할당
前例の出来事1.メモリ容量を
undefined
に初期化し、v
に格納します.2.新しいメモリ容量を10に初期化し、対応するメモリアドレスを
v
に格納します.3.新しいメモリ容量を20に初期化し、対応するメモリアドレスを
v
に格納します.これにより、
undefined
と10のメモリ容量が浪費されます.この問題を解決するために、JavaScriptのゴミ収集器では、参照されていないメモリ領域の割り当てが解除されます.
5.変数命名規則
_
、$
無効文字camelCase
、snake_case
、PascalCase
はいずれかのルールのみを適用する(多くはPascalCase
)追加
の最後の部分
const v = 10;
の場合、v
には10は含まれません.v
は、変数と呼ばれるバイナリ形式で10を含むメモリのアドレス値を有します.ゴミ収集器で参照されていないメモリ領域は、アクセス可能な識別子がない値を示します.
Reference
この問題について(モダンJavaScript Deep Dive-4章), 我々は、より多くの情報をここで見つけました https://velog.io/@1-blue/모던-자바스크립트-Deep-Dive-4장テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol