자바스크립트/BASIC
[JAVASCRIPT] Hoisting 호이스팅
kimmo
2019. 1. 13. 22:58
호이스팅을 변수 및 함수 선언이 물리적으로 작성한 코드의 상단으로 옮겨지는 것으로 가르치지만, 실제로는 그렇지 않습니다. 변수 및 함수 선언은 컴파일 단계에서 메모리에 저장되지만, 코드에서 입력한 위치와 정확히 일치한 곳에 있습니다.
출처 : https://developer.mozilla.org/ko/docs/Glossary/Hoisting
위 내용은 변수를 선언을 어떤 위치에서 하던 상관없이 컴파일 타임에 변수선언위치가 스코프의 상단으로 끌어올려진다고 생각하면 될것인다. 또한 선언만 상단으로 끌어올려질뿐 초기화는 되지 않기 때문에 초기화전에 변수는 undefined 가 된다.
(만약 변수를 선언하지 않은 상태에서 변수를 읽으려 한다면 정의되지 않았다고 나올 것이고,
할당을 할 경우에는 global scope의 변수에 자동선언 할당 될 것이다.)