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

Service

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

My

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

Policy

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

© 2026 그알것 · What Still Matters

질문 목록JavaScript
JavaScript

자바스크립트에서 어떻게 호이스팅이 가능한지에 대해서 설명해주세요

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

면접관의 질문 의도

호이스팅을 외운 결과로만 설명하는지, _실행 전 바인딩 단계_라는 엔진 동작으로 풀 수 있는 사람인지를 가른다.

큐레이션 답변

학습 자료

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

좋은 답변 구조

  1. 01엔진의 _실행 전 환경 레코드 등록 단계_라는 메커니즘 정의로 시작한다
  2. 02함수 선언·var·let/const 각각의 등록·초기화·할당 시점을 단계 흐름으로 설명한다
  3. 03TDZ에 걸리는 ReferenceError·함수 표현식이 호출 불가능한 _분기 동작_을 짚는다
  4. 04운영 코드에서 호이스팅이 만드는 버그 패턴(콜백 안 참조 등)을 디버깅 포인트로 마무리한다

자주 실수하는 포인트

"선언이 위로 이동한다"로 호이스팅을 정의하고 등록/초기화 단계를 빠뜨린다
var와 let/const의 초기화 시점 차이를 "같은 동작"으로 뭉뚱그린다
함수 선언식과 표현식의 호출 가능 시점을 헷갈린다
TDZ ReferenceError를 "변수 없음" 정도로 단순화한다

실무 맥락

  • var와 let/const가 혼재된 레거시 코드의 점진 전환
  • 번들 후 콜백 안에서 const 참조가 TDZ에 걸리는 디버깅
  • 함수 선언식/표현식 사용 기준을 팀 컨벤션으로 정리하는 코드 리뷰

본인 경험에 녹이는 힌트

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

var → let/const 전환 도중 호이스팅으로 가려졌던 버그가 드러난 경험이 있다면 그 케이스로 자연스럽게 이어진다

함수 선언식/표현식 선택 기준을 팀에 정한 경험이 있다면 호출 가능 시점을 근거로 설명할 수 있다

커뮤니티 인기 답변

전체 0개

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

관련 꼬리 질문

Q1var와 let/const의 초기화 시점은 어떻게 다른가요
Q2함수 선언식과 표현식의 호이스팅 차이는 무엇인가요
Q3TDZ가 왜 필요한 설계인지 설명할 수 있나요
아직 답을 쓰지 않았어요.
큐레이션 답변과 다른 사람 답변을 보고, 자기 언어로 답을 정리해보면 학습 효과가 가장 큽니다.
목차
  • 01면접관의 질문 의도
  • 02큐레이션 답변
  • 03좋은 답변 구조
  • 04자주 실수하는 포인트
  • 05실무 맥락
  • 06본인 경험에 녹이는 힌트
  • 07커뮤니티 인기 답변준비중
  • 08관련 꼬리 질문