TDZ zone

박정훈·2022년 1월 14일
0

Java Script

목록 보기
3/8

TOAST UI TDZ

재밌는 글을 읽었다.
TDZ 존은 선언 전에는 변수에 접근하는 것을 금지한다. 라고 하더라.
우선 변수의 생성 과정을 보면

  1. 선언 단계
  2. 초기화 단계
  3. 할당 단계

var 는 선언 및 초기화(undefined 를 할당)가 동시에 된다. 그래서 선언하지 않고 사용하게 되면 undefined가 나오는 것.
let 은 선언 단계와 초기화 단계가 따로 있다. hoisting 되면서 선언이 이루어 지지만 초기화 단계는 실제로 코드에 도달해야 한다.
const 는 선언과 할당이 동시에 되어야 한다.

TDZ zone 의 영향?

let과 const, class, constructor 내부의 super()에 기본 함수 매개변수까지 TDZ 존의 영향을 받아서 선언 전에 사용하려 한다면 ReferenceError를 뱉는다.
Uncaught ReferenceError: can't access lexical declaration 'count' before initialization

hoisting?

사실 let 과 const 또한 hoisting 된다. 그럼에도 error 가 나는것이 이 TDZ zone 때문이다.
또한 var는 물론이고 함수 선언import 또한 호이스팅 되서 선언 전에 접근 할 수 있다.

profile
그냥 개인적으로 공부한 글들에 불과

0개의 댓글