티스토리 뷰

javacsript/공부

TDZ와 호이스팅, let const var

실전압축코딩 2023. 6. 7. 09:29

tdz란?

 

스코프의 시작 지점 과 초기화 단계(Initialization phase) 사이에 있는 단계. 일시적 사각 지대로 로 불린다.

이 tdz에서 변수에 접근 할 시 Reference Error가 발생한다.

 

var 키워드일 경우에는 선언과 동시에 초기화가 진행 되어진다. 그러므로 할당 단계(Assignment phase) 이전에도 undefined로 값 접근이 가능한것!

 

흔히 하는 착각이 let과 const는 호이스팅 이 이루어지지 않는다는 것인데 이것은 틀린 사실이다.

호이스팅은 var,let,const 전부 이루어지지만, let과 const는 할당전 tdz 에서 접근시 Reference Error가 발생한 것이다.

 

  • 선언 단계(Declaration phase) : 변수를 실행 컨텍스트의 변수 객체에 등록하는 단계를 의미합니다. 이 변수 객체는 스코프가 참조하는 대상이 됩니다.
  • 초기화 단계(Initialization phase) : 실행 컨텍스트에 존재 하는 변수 객체에 선언 단계의 변수를 위한 메모리를 만드는 단계 입니다. 이 단계에서 할당된 메모리에는 undefined로 초기화 됩니다.
  • 할당 단계(Assignment phase) : 사용자가 undefined로 초기화된 메모리의 다른 값을 할당하는 단계 입니다. 

 

호이스팅이란

스코프 안에 있는 선언들을 모두 스코프의 최상위로 끌어올리는 것

 

'javacsript > 공부' 카테고리의 다른 글

[TS] 옵셔널 파라미터  (1) 2023.07.21
Active Record패턴과 Data Mapper 패턴  (0) 2023.07.20
js 구조분해할당 [destructuring]  (0) 2023.07.11
js spread/rest 문법  (0) 2023.07.11
js call appy bind  (0) 2023.06.07