[JS] Hoisting, TDZ

Kng_db·2023년 3월 28일
0

호이스팅

변수, 함수를 참조하는 코드가 선언문 보다 앞에 있다면 참조 에러가 발생해야 하지만 에러가 발생하지 않는 경우가 생깁니다.
그 이유는 선언이 런타임이 아니라 그 이전 단계에서 먼저 실행(메모리 할당)되기 때문입니다.
선언문이 코드의 선두로 끌어 올려진 것처럼 동작하는 자바스크립트 고유의 특징을 호이스팅이라고 합니다.

var, let, const, function, funtion*, class 키워드를 사용해서 선언하는 모든 식별자는 호이스팅 됩니다.

변수

  • var 키워드는 호이스팅시 undefined로 초기화하고 이를 출력합니다.
  • let, const 키워드는 호이스팅시 마치 호이스팅이 일어나지 않은 것처럼 동작합니다.
    let, const는 호이스팅 시 변수를 초기화 하지 않습니다.

TDZ(Temporal Dead Zone)

변수 스코프의 맨 위에서 변수의 초기화 완료 시점까지의 변수는 "TDZ(시간상 사각지대)"에 들어간 변수라고 표현합니다.
TDZ가 나타나는 이유는 코드의 작성 순서(위치)가 아닌 코드의 실행 순서(시간)에 의해 형성되기 때문입니다.

TDZ를 사용하는 가장 큰 이유는 가독성이 좋기 때문입니다.
호이스팅이 일어났을때 헷갈리지 않고 데이터 파악이 가능합니다.

profile
코딩 즐기는 사람

0개의 댓글