그알것 — 그럼에도 알아야 할 것들
홈질문커뮤니티
로그인
그알것 — 그럼에도 알아야 할 것들

Service

  • 홈
  • 소개
  • 질문
  • 커뮤니티

My

  • 내 워크스페이스
  • 저장한 질문
  • 작성한 답변

Policy

  • 이용약관
  • 개인정보처리방침
  • 문의

© 2026 그알것 · What Still Matters

질문 목록JavaScript
JavaScript

자바스크립트 호이스팅에 대해서 설명해주세요

실무3/5
설계3/5
인간2/5
기초4/5

면접관의 질문 의도

"선언이 위로 끌어올려진다"만 외운 사람인지, _바인딩 시점이 다르다_는 실행 컨텍스트 모델로 설명할 수 있는 사람인지를 가른다.

큐레이션 답변

학습 자료

호이스팅은 자바스크립트 엔진이 코드를 실행하기 전 _스코프별로 식별자를 환경 레코드에 등록_하는 단계 때문에 생긴다. var는 등록과 동시에 undefined로 초기화되어 선언 전에 읽어도 ReferenceError가 아니라 undefined가 나온다. 함수 선언식은 본문까지 함께 바인딩되어 선언 전 호출이 가능하다. let/const는 등록은 되지만 초기화 전 구간(TDZ)에서 접근하면 ReferenceError가 발생한다. 즉 "코드가 위로 이동"하는 게 아니라, _실행 전 바인딩 시점_이 식별자 종류별로 다른 것이다.

좋은 답변 구조

  1. 01호이스팅을 "이동"이 아니라 _실행 전 바인딩 단계_로 정의한다
  2. 02var·함수 선언식·let/const·함수 표현식 각각의 등록·초기화·할당 시점을 단계로 설명한다
  3. 03TDZ 진입 시 ReferenceError가 나는 _예외 동작_과 함수 표현식이 호출 불가능한 이유를 짚는다
  4. 04운영 코드에서 var/let 혼용·콜백 안 참조 같은 디버깅 포인트로 마무리한다

자주 실수하는 포인트

호이스팅이 값 할당까지 끌어올린다고 오해한다
var와 let/const의 TDZ 차이를 설명하지 못한다
함수 선언식과 표현식의 호출 가능 시점을 구분 못 한다
TDZ ReferenceError를 "변수 없음" 정도로 단순화한다

실무 맥락

  • var와 let/const가 섞인 레거시 자바스크립트를 점진 전환하는 리팩터링
  • 번들 후 실행 순서가 바뀌어 런타임 ReferenceError가 나는 디버깅
  • 함수 선언식·표현식 혼용 코드에서 호출 시점 차이를 정리하는 코드 리뷰

본인 경험에 녹이는 힌트

TDZ에 걸리는 const 참조 버그를 재현·해결해본 적이 있다면 "등록은 됐는데 초기화 전"이라는 모델을 그대로 답변 후크로 쓸 수 있다

var를 let/const로 점진 전환하면서 호이스팅으로 가려졌던 버그가 드러난 경험이 있다면 그 케이스를 짚을 수 있다

함수 선언식 vs 표현식 사용 기준을 팀에 정해본 적이 있다면 호이스팅 동작 차이를 근거로 설명할 수 있다

커뮤니티 인기 답변

전체 0개

아직 공개된 답변이 없어요. 첫 공개 답변을 남겨보세요.

관련 꼬리 질문

Q1함수 표현식은 왜 선언 전 호출이 불가능한가요
Q2블록 스코프와 호이스팅은 어떤 관계가 있나요
Q3TDZ를 활용해 예방할 수 있는 실수는 무엇인가요
아직 답을 쓰지 않았어요.
큐레이션 답변과 다른 사람 답변을 보고, 자기 언어로 답을 정리해보면 학습 효과가 가장 큽니다.
목차
  • 01면접관의 질문 의도
  • 02큐레이션 답변
  • 03좋은 답변 구조
  • 04자주 실수하는 포인트
  • 05실무 맥락
  • 06본인 경험에 녹이는 힌트
  • 07커뮤니티 인기 답변준비중
  • 08관련 꼬리 질문