var, let, const의 차이 ⏤ 변수 선언 및 할당, 호이스팅, 스코프
자바스크립트에서 var로 변수 선언이 가능했는데, 왜 const와 let이 나왔으며 이 둘의 사용을 권장할까? 이를 정확하게 알기 위해서는, 변수의 선언 및 할당 과정, 호이스팅, 스코프를 알아야한다.
www.howdy-mj.me
- 변수 선언뿐 아니라, var, let, const, function, function*, class 키워드를 사용해 선언한 모든 식별자(변수, 함수, 클래스 등)는 호이스팅 됨.
- 선언은 호이스팅 되는데 할당은 순차적으로 실행되는 런타임에 실행됨. 따라서 반환되는 값이 순서에 따라 다를 수 있음.
- 선언은 진짜 걍 선언이고 할당은 =으로 값을 주는 것. 재할당은 =으로 다시 다른 값을 부여하는 것
- 함수 선언문의 경우, 런타임 이전에 자바스크립트 엔진에서 먼저 실행되어, 함수 자체를 호이스팅 시킬 수 있음. 함수 표현식은 변수 호이스팅과 같이 undefined로 초기화만 시키고, 런타임에서 해당 함수 표현식이 할당되어 그때 객체가 된다.