2022-01-08

예전에 자바스크립트를 처음 공부할 때는 호이스팅이라는 개념이 이해가 안갔던 게

회사에서 1년간 실무를 하면서 그 개념을 제대로 깨닫게 되었고,

모르는 분들을 위해서, 그리고 훗날 이 글을 볼 나 자신을 위해서라도

정리를 해보려 한다.

호이스팅이란, 코드 실행 전에 변수 선언이 최상단 라인으로 끌어올려지는 것 같은 현상을 말한다.

ㄹㅇ로다가 끌어올려지는 게 아니다.

그리고 끌어올려지는 범위는 현재 속한 함수 스코프의 최상단이다.

내가 아는 호이스팅이 되는 경우들을 모아보면 다음과 같다.

사실 이 글을 쓰면서 이게 진짜 맞나? 싶어 다시 찾아봤는데.... letconst, class 선언문도 모두 호이스팅 된다. (오늘 첨알음)

호이스팅이 일어나는 이유는 선언문이 다른 코드보다 메모리에 먼저 할당되기 때문인데,

var로 선언된 변수는 선언과 동시에 undefined로 초기화되어 메모리에 할당되지만,

let, const 등으로 선언된 변수는 초깃값을 가지지 않고 메모리에 할당된다.