먼저 단어 hoist는 끌어올리다 라는 뜻이 있다(또는 승강장치)
내가 처음 Javascript를 배웠을 때 변수 선언은 var이 였다.
나중에 군전역 후 Javascript를 다시 접할때는 const와 let으로 바뀌어있었다.
그 이유는 호이스팅 때문이였는데 호이스팅이란..
JavaScript는 코드 실행 전 스코프에 선언을 변수를 등록하는데 여기서 이미 선언은 등록이 되어버린다. 즉 선언은 끌어올려지지만 값은 할당되지않는다.
console.log(a);
//undefiend
var a = 1;
let과 const로 선언한 변수도 호이스팅 대상이지만, var와 달리 호이스팅 시 undefined로 변수를 초기화하지는 않는다. 따라서 변수의 초기화를 수행하기 전에 읽는 코드가 먼저 나타나면 예외(오류)로 발생