# var, let, const

변수가 사용되는 가장 큰 이유는 재사용성이다. 변수의 종류은 3가지로 나뉘며 ES5까지 사용하던 var와 ES6부터 추가된 let, const가 있다.

# 세 가지 변수의 차이점

# 재선언과 재할당

# 스코프

스코프는 변수가 유효한 범위를 말한다.

# 호이스팅

호이스팅은 변수를 유효 스코프 최상단으로 끌어올리는 듯한 현상을 말한다.

기본적으로 세 가지 변수 모두 호이스팅이 되지만 선언,초기화,할당 단계에서 차이가 발생하기 때문에 호이스팅이 되지 않는 것처럼 보이는 것이다.

변수 생성 단계

(1) 선언(Declaration): 변수를 실행 컨텍스트의 environmentRecord에 등록, environmentRecord는 스코프가 참조하는 대상

(2) 초기화(Initialization): environmentRecord에 등록 된 변수를 위한 메모리를 확보, 이 단계에서 변수는 undefined로 초기화

(3) 할당(Assignment): undefined로 초기화 된 변수에 실제 값을 할당