728x90
반응형
1. 변수의 선언과 초기화
1.1. 변수의 선언
값을 저장하기 위한 메모리 공간을 확보하고 변수의 이름과 확보된 메모리 공간의 주소를 연결해서
값을 저장하도록 준비하는 것
- 변수 선언 키워드 :
var
,let
,const
- 선언하지 않은 식별자에 접근하면
ReferenceError
(참조 에러) 발생
1.2. 변수의 초기화
확보된 메모리 공간에는 자바스크립트 엔진에 의해
undefined
라는 값이 암묵적으로 할당되어 초기화
변수의 이름은 실행 컨텍스트에 등록됨
자바스크립트 엔진이 소스코드를 평가하고 실행하기 위한 환경 제공,
코드의 실행 결과 실제로 관리
초기화 단계를 통해 이전 애플리케이션에서 사용했던 값(쓰레기 값)을 참조하지 않음
2. 변수 선언 실행 시점과 호이스팅
2.1. 변수 선언의 실행 시점
변수 선언이 소스코드가 한 줄 씩 실행되는 런타임이 아닌, 그 이전 단계에서 실행됨
<code />
console.log(score); // undefined
var score;
자바스크립트 엔진의 실행 순서
소스코드의 평가 과정
- 변수 선언을 포함한 모든 선언문(변수 선언문, 함수 선언문 등)을 소스코드에서 찾아 실행
선언문 제외 소스코드 한 줄 씩 실행
⇒ 변수 선언은 어디에 있든 다른 코드보다 먼저 실행
변수 선언이 소스코드 어디에 위치하는지와 무관하게 어디서든 변수 참조 가능
2.2. ⭐️ 변수 호이스팅
변수 선언문이 코드의 선수로 끌어 올려진 것처럼 동작하는 자바스크립트 고유의 특징
2.3. 값의 할당
변수 선언 : 소스코드가 순차적으로 실행되는 시점인 런타임 이전에 먼저 실행
값의 할당 : 소스코드가 순차적으로 실행되는 시점인 런타임에 실행
<code />
console.log(score); // undefined
var score = 90;
console.log(score); // 90
- 변수의 값을 할당할 때는 새로운 메모리 공간 확보 하고 값을 저장한다는 점에 주의
- 변수의 재할당은 새로운 메모리 공간을 확보함
- 식별자와 연결되지 않는 불필요한 값은 가비지콜렉터에 의해 메모리에서 자동 해제
<code />
console.log(score); // undefined
score = 90;
console.log(score); // 90
var score;
console.log(score); // 90
반응형
'코딩언어 > JavaScript' 카테고리의 다른 글
[JavaScript] 08. Objects 객체 (0) | 2022.12.22 |
---|---|
[JavaScript] 07. Iterators 반복자 (0) | 2022.12.21 |
[JavaScript] 06. Loops 반복 (0) | 2022.12.19 |
[JavaScript] 05. Arrays 배열 (0) | 2022.12.18 |
[JavaScript] 04. SCOPE 범위 (0) | 2022.12.16 |