항해99

[항해99] TIL D+31

crab. 2022. 8. 11. 21:39

TDZ(Temporal Dead Zone/일시적 사각지대)란?

👨‍🎓 TDZ는 무엇일까?

TDZ ( Temporal Dead Zone )는 해석하면 "일시적 사각지대" 이다.

위 아래 코드를 보면서 어떤 부분에서 에러가 일어나는지 살펴보자!

첫 번째 코드 [ 인스턴스 생성 후 클래스 선언 ]

const myCat = new cat('mimi')

class cat {
  constructor(name) {
    this.name = name;
  }
}

두 번째 코드 [ 함수 호출 후 함수 선언]

hello('Shin')

function hello (name) {
  return `Hello ${name} :)`}

위 두개의 코드를 실행해보면 두 번째 코드는 정상적으로 작동 하지만 첫 번째 코드를 작동시키면ReferenceError: Cannot access 'cat' before initialization 오류가 뜨게 된다.

그럼 왜 하나는 오류가 나고, 하나는 오류가 나지 않았는지에 대해 알기 위해 TDZ에 대해 알아보자!


🕵️‍♂️TDZ에 대해

그럼 TDZ에 대해 알아보기 위해 예시를 만들겠습니다.아래 코드는 const 변수를 선언하고, 초기화한 다음 변수 값을 출력하는 순서로 작동합니다.

const cat = "야옹"

console.log(cat)

이번에는 순서를 바꿔서 변수에 먼저 사용하고, 그 다음 선언 및 초기화를 해보겠습니다.

console.log(cat)

const cat = "야옹"

//error : ReferenceError

순서를 바꾸면 ReferenceError 오류가 나타나는 것을 볼 수 있습니다.

TDZ

라는 것은 변수 선언 및 초기화 하기 전 사이의 사각지대 인 것을 알 수 있습니다!

즉 변수를 선언 및 초기화 하기전에 사용하게 되면

TDZ

상태에서 사용하는 것 이기 때문에

ReferenceError

에러가 나타나게 됩니다 !!

'항해99' 카테고리의 다른 글

[항해99] WIL D+39  (0) 2022.08.19
[항해99] TIL D+32  (0) 2022.08.12
[항해99] TIL D+30  (0) 2022.08.11
[항해99] TIL D+29  (0) 2022.08.11
[항해99] TIL D+28  (0) 2022.08.08