호이스팅과 TDZ는 무엇일까?

sona·2022년 10월 17일
0

⚙️ 기술로그

목록 보기
11/23

✏️ 스코프, 호이스팅, TDZ

스코프

  • 자바스크립트의 스코프는 함수 레벨 스코프를 따른다.
  • 같은 함수 레벨에 존재하면 값을 참조할 수 있다는 건데
    ES6에서 let 키워드가 도입되면서 블록 레벨 스코프를 사용할 수 있게 됐다.

호이스팅

  • 함수의 코드를 실행하기 전에 변수와 함수의 메모리 공간을 선언 전에 미리 할당하는 것.
  • 초기화를 제외한 선언만 호이스팅.
  • 그렇기 때문에 선언, 정의된 코드보다 호출하는 코드를 먼저 배치할 수 있음.
  • 변수의 선언과 초기화를 분리.
  • 변수의 선언을 코드의 최상단으로 끌어올림.

TDZ

  • TDZ의 영항을 받는 구문 const, let, class
  • 변수 스코프의 맨 위에서부터 ~ 변수의 초기화 완료 시점까지의 변수는 TDZ에 들어간 변수
  • 코드의 작성 순서(위치)가 아니라 코드의 실행 순서(시간)에 의해 형성

✏️ 함수 선언문과 함수 표현식에서 호이스팅 방식의 차이

함수 선언문
: 함수명이 정의되어 있고, 별도의 할당 명령이 없는 것

함수 표현식
: 정의한 function을 별도의 변수에 할당하는 것

호이스팅 방식의 차이

  • function name() : 함수 선언문
  • let name = function() : 함수 표현식
  • var,함수 선언문은 호이스팅 대상,let,const,함수표현식은 대상이 아니다.

0개의 댓글