호이스팅 (hoisting)
- 변수나 함수의 선언이 코드 최상단으로 끌어올려지는 듯한 현상을 말한다
함수 호이스팅
TDZ( Temporal Dead Zone)
let과 const 호이스팅 발생하지 않는것은 아니다.
- 위쪽으로 올라가긴 하지만 변수들은 TDZ에 머무르기 때문에 메모리를 할당받지 못해 에러가 뜬다.
Var 키워드 일경우
- 선언 단계와 초기화단계 묶어져서 진행하게 되는데 TDZ가 존재할 수 없기때문에
선언이 된 동시에 호이스팅으로 인해서 올라가면서 초기화가 진행되어 undifind가 진행된다.
함수 선언식
- var 키워드랑 똑같다.
- 선언식은 할당 단계까지 합쳐져있다.
- 그래서 결과가 undifind가 아닌 코드까지 실행될 수 있다.