호이스팅은 변수나 함수 선언을 함수 유효 범위(또는 함수 외부의 경우 전역 범위)의 맨 위로 이동하는 메커니즘이다!
호이스팅은 다음과 같이 3단계로 구성된 변수의 수명 주기에 영향을 준다.
선언 - 변수를 실행 컨텍스트의 변수 객체에 등록하는 단계.
초기화 - 실행 컨텍스트에 존재하는 변수 객체에 선언 단계에서 생성된 변수를 위한 메모리를 만드는 단계.
할당 - 초기화 단계에서 undefined로 초기화된 메모리에 다른 값을 할당하는 단계
코딩을 할 때 항상 이 세가지 순서를 지키는 것이 중요하다.
=> 호이스팅으로 인해 코드 실행 전 이미 변수, 함수에 대한 선언이 저장되어 있기 때문에, 선언문보다 참조 및 호출이 먼저 나와도 동작할 수 있게 된다.