[완강 챌린지] 웹 프론트엔드를 위한 자바스크립트 첫 걸음 : section2-8. 호이스팅

const job = '프론트엔드';·2023년 6월 23일
1
post-thumbnail

호이스팅(hoisting)?

  • 아직 선언되지 않은 함수나 변수들을 스코프의 맨 위로 끌어올려서 사용하는 것처럼 보이게하는 작동 방식

함수 호이스팅

  • 함수가 선언되기 전에 함수를 호출하더라도 함수는 오류없이 출력됨
  • 이는 gazero 호출문 보다 선언문이 먼저 작성되어 있는 코드로 받아들여지기 때문
  • 함수 선언문을 gazero함수가 갖는 스코프, 유효범위의 가장 위쪽으로 끌어올려서 코드를 해석하는 작동 방식이 함수 호이스팅

변수 호이스팅

  • var를 이용해 변수를 선언
  • 실행결과 Error가 아닌 undefined로 출력됨
  • var gazero;라는 변수의 선언문만 윗쪽으로 올라감

let 이나 const의 경우?

  • undefined이 아니라 error가 발생
  • 그렇다면, let과 const로 선언된 변수는 변수 호이스팅이 발생하지 않는 걸까? NOPE! ❗TDZ❗의 존재 때문 !

TDZ(Temporal Dead Zone), 일시적인 사각지대

  • 변수를 사용하는 것을 허용하지 않는 공간
  • let과 const에 호이스팅이 발생하지 않는 것이 아님
  • 변수 스코프의 맨 위에서 변수의 초기화가 완료될 때 까지 TDZ 공간에 있기 때문에 호이스팅이 발생하지 않는 것처럼 보임
profile
`나는 ${job} 개발자`

0개의 댓글