TDZ?

BirdsOnTree·2022년 7월 30일
0

Javascript

목록 보기
7/17
post-thumbnail

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

전에 블로그에 글을 작성하면서 TDZ에 대해서 글을 쓴적이 있는데 자세하게는 보질 않았던것 같기도 하고, 강의에 TDZ라는 단어가 나와서 정확히 TDZ가 무엇인지 글을 작성해본다.

console.log(wanna);
console.log(Ihave)

let wanna = '부자';
const Ihave = '초코칩';

//error : ReferenceError

let과 const

const airConditioner = new cat('wanna')

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

}
//error : ReferenceError

class 구문

  • 변수 선언 및 초기화 하기 전 사이의 사각지대
    변수를 선언 및 초기화 하기전에 사용하게 되면 TDZ 상태에서 사용하는 것 이기 때문에 ReferenceError 에러뜬다.

[변수 생성의 3단]
선언 → 초기화 → 할당

  • 선언: 실행 컨텍스트에 변수 객체를 등록 (스코프가 참조)
  • 초기화: 변수 객체에 등록된 변수를 위해 메모리에 공간을 확보 (변수는 보통 undefined로 초기화)
  • 할당: undefined로 초기화된 변수에 실제 값을 할당

var는 함수수준 스코프를 가지고 있다.

  • 선언과 초기화를 한번에 한다. > 선언을 하기 전에 사용할수 있다.
console.log('gonna')

var gonna = '여행' 

// '여행'이 뜨게된다.
// 함수 선언식
gonna('괌') // "I gonna 괌"

function gonna (place) {
  return `I gonna ${place}`
}
gonna('울릉도') // "I gonna 울릉도"
  • var, function, import는 TDZ의 영향을 받지 않는다.
//함수 표현식
console.log(a())

const a = () => {
	return 1
}

//error : ReferenceError

하지만, 함수 표현식은 애러가 뜬다.

0개의 댓글