천진난만 코딩 스토리

2023.05.31) Hoisting & TDZ 본문

TIL(Today I Learned)

2023.05.31) Hoisting & TDZ

Wisdom_1104 2023. 5. 31. 11:56

1. Hoisting 이란? 

Hoisiting이란 인터프리터가 변수와 함수의 메모리 공간을 선언 전에 미리 할당하는 것을 의미한다.

대표적으로 호이스팅되는 것

  • var
  • let
  • const
  • 선언적함수
  • class

이때 const, let, class는 TDZ의 영향을 받는다.

 

2. TDZ란?

TDZ란 Temporal Dead Zone으로 const, let, class가 호이스팅 시 초기화되지않기 때문에 갖는 일시적 사각지대이다.

var는 변수객체를 생성한 후  AllocateTo메소드를 통해 바로 메모리 공간에 공간을 할당하지만,

letconst는 set_initializer_position메소드를 통해 해당 코드의 위치를 의미하는 position값만 정해준다.

즉, 선언은 되어있지만 변수에 값을 담기 위한 메모리에 공간이 확보되지 않은 상태이기때문에 let과 const는 TDZ의 영향을 받는다.

 

따라서, 선언은 되어있지만 아직 초기화 되지 않아 변수에 담길 값을 위한 공간이 메모리에 할당되지 않은 상태의 구역이 TDZ이다.