← 질문 목록
#242깊이 0

호이스팅으로 인한 부작용을 어떻게 막는가?

언어 · 런타임기초언어 의미론

let과 const를 사용하고 선언부를 최상단으로 올린다. var로 선언한 변수는 선언과 동시에 undefined로 초기화되어 논리적 오류를 유발하기 때문이다.

기준varlet/const
초기화 시점선언과 동시에할당 전 접근 불가
스코프함수 단위블록 단위

var는 선언문이 스코프 최상단으로 끌어올려져 변수 이름만 예약된다. 하지만 값은 할당문 단계에서 결정된다. 이 틈에 접근하면 undefined가 나온다.

반면 let과 const는 선언 전 접근 시 TDZ(Temporal Dead Zone)에 빠진다. 런타임 에러를 발생시켜 개발자가 잘못된 접근을 즉시 알게 한다.

함수 선언문은 호이스팅되어 선언 전 호출이 가능하다. 하지만 의도치 않은 함수 덮어쓰기가 발생할 수 있어 함수 표현식을 권장한다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

호이스팅으로 인한 부작용을 어떻게 막는가?