JS 공부하다 보면 호이스팅 을 심심치 않게 들어본다.
특히, var를 이용한 변수 지정시 불러올 수 있는 오류에 대해 이야기 할 때 var를 지양해야 하는 이유 중 하나로 든다.
Hoist 영어로 (국기를) 게양하다, 감아 올리다 등의 뜻으로 쓰인다.
뜻에서 가늠이 되듯, JS내에서 var로 변수를 지정하거나 function을 지정하고 실행 할 때, 해당 Scope의 맨 위로 올리는 상황을 말한다.
호이스팅이 발생하는 원인으로는 변수생성과 초기화(선언과 할당)가 분리되어 진행되어 발생한다고 한다.
console.log(dog);
var dog = cute; //undefined
위 코드는 사실 아래 코드와 같이 실행됩니다.
var dog = undefined;
console.log(dog);
dog = cute;
우리는 의도하지 않았지만, dog의 변수지정이 해당 scope의 가장 위로 올라가며 undefined 된것이다.
호이스팅으로 인한 버그나 오류를 줄이려면 변수지정을 미리 하는것을 생활화 하자!