
▶️ 값의 위치를 가리키는 상징적인 이름
var, let, const 키워드를 사용undefined를 할당해 초기화ReferenceError(참조 에러)가 발생※ 실행컨텍스트
JS 엔진이 소스코드를 평가하고 실행하기 위해 필요한 환경을 제공하고 코드의 실행 결과를 실제로 관리하는 영역
JS는 모든 선언문이, 런타임이 아닌 그 이전 단계(소스코드의 평가 과정)에서 먼저 실행 됨.
이후 선언문을 제외한 소스코드를 한 줄씩 순차적으로 실행.
위와 같은 동작으로 모든 선언문이 코드의 선두로 끌어 올려진 것처럼 동작하는 JS의 고유의 특징을 일컫는다.
console.log(score); // undefined
var score; // 변수 선언문
값의 할당은 런타임에 실행됨.
console.log(score);
var score = 80;
console.log(score);
위와 같이 값의 할당을 하나의 문장으로 단축 표현해도 JS 엔진은 변수의 선언과 할당을 2개의 문으로 각각 실행(런타임 이전: 선언&초기화, 런타임: 할당)
※ 가비지 콜렉터
애플리케이션이 할당한 메모리 공간을 주기적으로 검사하여 더 이상 사용되지 않는 메모리를 해제하는 기능
JS는 가비지 콜렉터를 내장하고 있어, 메모리 누수를 방지