"선언이 위로 끌어올려진다"만 외운 사람인지, _바인딩 시점이 다르다_는 실행 컨텍스트 모델로 설명할 수 있는 사람인지를 가른다.
호이스팅은 자바스크립트 엔진이 코드를 실행하기 전 _스코프별로 식별자를 환경 레코드에 등록_하는 단계 때문에 생긴다. var는 등록과 동시에 undefined로 초기화되어 선언 전에 읽어도 ReferenceError가 아니라 undefined가 나온다. 함수 선언식은 본문까지 함께 바인딩되어 선언 전 호출이 가능하다. let/const는 등록은 되지만 초기화 전 구간(TDZ)에서 접근하면 ReferenceError가 발생한다. 즉 "코드가 위로 이동"하는 게 아니라, _실행 전 바인딩 시점_이 식별자 종류별로 다른 것이다.
TDZ에 걸리는 const 참조 버그를 재현·해결해본 적이 있다면 "등록은 됐는데 초기화 전"이라는 모델을 그대로 답변 후크로 쓸 수 있다
var를 let/const로 점진 전환하면서 호이스팅으로 가려졌던 버그가 드러난 경험이 있다면 그 케이스를 짚을 수 있다
함수 선언식 vs 표현식 사용 기준을 팀에 정해본 적이 있다면 호이스팅 동작 차이를 근거로 설명할 수 있다
아직 공개된 답변이 없어요. 첫 공개 답변을 남겨보세요.