호이스팅은 코드 실행 전에 변수 및 함수 선언을 해당 범위의 맨 위로 이동하는 자바스립트 메커니즘이다.
변수 생성하는데 총 3가지 단계를 걸친다.
undefined
값을 할당하게 된다.var
는 선언과 초기화 가 한번에 이뤄져서 undefined 값을 초기화 하기 때문에. 변수 선언문 전에 접근해도 에러가 발생하지 않고 undefined 값이 출력이 된다.const
,let
은 선언과 초기화 가 분리되어있기 때문에 변수 선언문 까지 도달해야 초기화 가 되기때문에 그전에 변수에 접근하면 참조에러가 뜬다.스코프 시작점 부터 초기화 시작점까지 그 구간을 TDZ 일시적 사각지대라고 부른다.
호이스팅 우선순위:
변수선언이 함수선언보다 우선순위를 가진다.