[ JavaScript ] ES6 : TDZ (Temporal Dead Zone) | let 참조에러

2021. 2. 15. 20:01·Archive/Develop
728x90
반응형

 

1. let 참조 에러

 

 

아래는 이전 포스팅에서 사용했던 코드이다.

 

 

 

let test = '1';
if(true){
	let test = '2';
    console.log(test);
};
console.log(test);

 

이 코드를 실행하면 아래와 같은 결과를 얻는다.

 

 

 

 

 

아래와 같이 코드를 변경했다.

 

 

let test = '1';
if(true){
	console.log(test);
    let test = '2';
};
console.log(test);

 

 

아래와 같은 결과가 출력된다.

 

 

 

 

 

만약 호이스팅이 없었다면 3번째 test 를 출력하는 과정에서

 

전역스코프의 값인 1 이 출력되었을 것이다.

 

 

그렇지만, 블록스코프 안에 선언된 test(,4번라인 test)가 호이스팅 되어

해당 블록 스코프의 최상단에 test 변수가 선언되게 된다.

 

 

근데 왜 undefined 가 아닌 ReferenceError 가 출력될까?

 

 

 

 

let 은 var 와 다르게 변수가 초기화 되기 전에 접근하면 ReferenceError(참조에러) 가 발생한다.

 

 

 

2. TDZ 란?

 

 

let으로 선언된 변수가 초기화 하기전에 액세스 할 수 없는 구역을

Temporal Dead zone(TDZ ) 라고 한다.

 

아래 코드에서 TDZ 가 정확히 어떤 구역인지 보여주겠다.

 

 

 

let test = '1';
if(true){
	// test 에 대한 TDZ 시작
	console.log(test);
    let test = '2'; // 선언문은 변수 test에 대한 tdz 종료
};
console.log(test);

 

 

위 코드에 달려있는 주석이 TDZ 구역이라고 볼 수 있다.

 

 

 

 

 

 

728x90
반응형

'Archive > Develop' 카테고리의 다른 글

[ JavaScript ] ES6 : 비구조화 할당(Destructuring)  (0) 2021.02.15
[ JavaScript ] ES6 : 템플릿 문자열 표현식 | 백틱  (0) 2021.02.15
[ JavaScript ] ES6 : Block scope | var, let 변수 유효범위  (0) 2021.02.15
[ JavaScript ] ES6 : let 과 const 개념 | let & const 공통점/차이점  (0) 2021.02.14
[ React ] ProtoTypes 설치하기 | ProtoTypes install  (0) 2021.02.13
'Archive/Develop' 카테고리의 다른 글
  • [ JavaScript ] ES6 : 비구조화 할당(Destructuring)
  • [ JavaScript ] ES6 : 템플릿 문자열 표현식 | 백틱
  • [ JavaScript ] ES6 : Block scope | var, let 변수 유효범위
  • [ JavaScript ] ES6 : let 과 const 개념 | let & const 공통점/차이점
코뮤(commu)
코뮤(commu)
코딩으로 커뮤니케이션하는 코뮤입니다 😎
  • 코뮤(commu)
    코뮤(COMMU)
    코뮤(commu)
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Archive
        • Hacking
        • Develop
        • ETC
      • Algorithm
      • DB&Infra
      • ETC
      • Node
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • IT지식보따리
    • IT가 맛있다
    • IT 천재
  • 공지사항

    • 배고픕니다
  • 인기 글

  • 태그

    코드업 파이썬 기초 100제
    파이썬
    파이썬 알고리즘
    코드업 기초
    Python
    파이썬 기초 문제
    Django
    자바스크립트
    코드업
    파이썬 백준
    자바스크립트 API
    오라클
    자바스크립트 객체
    docker
    카카오 100일 프로젝트
    백준
    백준 파이썬
    파이썬 문제
    비박스
    백준 문제풀이
    oracle db
    C++
    장고
    백준 풀이
    Oracle
    보안뉴스
    파이썬 기초
    Codeup
    Git
    javascript
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
코뮤(commu)
[ JavaScript ] ES6 : TDZ (Temporal Dead Zone) | let 참조에러
상단으로

티스토리툴바