My Boundary As Much As I Experienced

호이스팅의 이유 본문

FrontEnd/Javascript(Vanilla)

호이스팅의 이유

Bumang 2023. 8. 29. 09:30

 

JavaScript 엔진은 코드를 실행하기전 실행 컨텍스트(Execution Context)라는것이 생성됩니다.

 

실행 컨텍스트는 생성 단계(Creation Phase)와 실행 단계(Execution Phase)라는 2개의 단계를 거치는데
생성 단계는 코드를 읽기 전, 실행 단계는 실제 코드를 읽는 단계를 말합니다.

 

  • var의 경우 생성단계에서 변수 선언&초기화가 함께 진행되므로, 변수 객체 등록과 동시에 메모리 공간도 할당 받는다.
  • 그렇기 때문에 메모리를 할당받은 상태이므로 호이스팅시 메모리 참조를 통해 변수 접근이 가능하다.
  • let과 const의 경우 생성 단계에서 변수 선언은 하지만 초기화를 하지 않고 TDZ(Temporary Danger Zone)에 보관한다. 
  • 그래서 제대로 할당이 일어나지 않은 상황에서 let과 const로 만든 변수에 접근하려고 하면 에러가 발생한다.