JavaScript의 호이스팅(Hoisting)이란 무엇이며, var, let, const의 차이점은?
힌트 · TDZ(Temporal Dead Zone)와 스코프 차이를 생각해보세요.
"네, JavaScript에서 호이스팅은 선언된 변수나 함수가 코드 실행 전에 해당 스코프의 최상단으로 끌어올려지는 것처럼 보이는 현상을 말합니다. 실제로 변수가 물리적으로 이동하는 것은 아니고, JavaScript…
전체 모범답안 펼치기 접기
"네, JavaScript에서 호이스팅은 선언된 변수나 함수가 코드 실행 전에 해당 스코프의 최상단으로 끌어올려지는 것처럼 보이는 현상을 말합니다. 실제로 변수가 물리적으로 이동하는 것은 아니고, JavaScript 엔진이 코드를 실행하기 전에 변수와 함수 선언을 먼저 처리하기 때문에 발생하는 개념입니다.
var, let, const는 변수를 선언하는 방식인데, 호이스팅 방식과 스코프에서 차이가 있습니다.
var는 함수 스코프를 가지고, 호이스팅 시 undefined로 초기화됩니다. 즉, 선언 전에 사용해도 에러가 발생하지 않고 undefined를 반환합니다.
let과 const는 블록 스코프를 가지며, 호이스팅은 되지만 TDZ(Temporal Dead Zone)에 의해 선언 전에 접근하면 에러가 발생합니다. const는 선언 시 반드시 초기화해야 하고, 재할당이 불가능하다는 특징도 있습니다."