- Published on
2023.12.21
[딥다이브] - 04. 변수
4.2. 식별자
식별자
식별자는 메모리 공간에 저장되어 있는 어떤 값(30
)을 구별해서 식별하기 위해 그 값이 저장되어 있는 메모리 주소(0x0669F913
)를 기억해야 한다.
식별자는 값이 저장되어 있는 메모리 주소와 매핑 관계를 맺으며, 이 매핑 정보도 메모리에 저장되어야 한다. 메모리 상에 존재하는 어떤 값을 식별할 수 있는 이름은 모두 식별자이다.
4.3. 변수 선언
변수 선언은 2단계로 진행
선언 단계: 변수 이름을 등록
초기화 단계: 값을 저장하기 위해 메모리 공간을 확보하고 암묵적으로 undefined
를 할당
변수 이름을 비롯한 모든 식별자는 실행 컨텍스트에 등록된다. 자바스크립트 엔진은 실행 컨텍스트를 통해 식별자와 스코프를 관리한다.
4.4. 변수 선언의 실행 시점과 변수 호이스팅
자바스크립트 코드는 인터프리터에 의해 순차적으로 실행되는데, 아직 선언되지 않은 변수의 참조는 에러가 아닌 undefined
가 출력된다.
먼저 소스코드의 평가 과정을 거치며 모든 선언문을 실행하고 평가 과정이 끝나면 선언문을 제외한 소스코드를 한 줄씩 순차적으로 실행한다. 변수 선언문이 끌어 올려진 것처럼 동작하는 특징이 변수 호이스팅
.
4.5. 값의 할당
변수 선언
은 런타임 이전에 실행되고, 이후 값의 할당
이 런타임에 실행.
4.6. 값의 재할당
재할당하는 것은 현재 변수와 연결된 메모리 공간의 값을 바꾸는 것이 아니라, 새로운 메모리 공간에 값을 저장하고 변수와 연결하는 것이다.