스코프에 관한 이야기를 하면서 자연스럽게 나오는 얘기는 바로 호이스팅이다.
호이스팅이란? 공사장에서 화물을 들어올리는 그런 것을 얘기하는데
일단은 런타임에 대해서 얘기를 시작해야한다.
자바스크립트의 컴파일방식은 인터프리터 방식이다.
파이썬과 비슷한 방식을 이용하는데 c같은 절차지향이 아닌것이다.
보통 프로그램을 시작을 하면 처음부터 내려가며 순차적으로 읽으며 실행을 한다.
다만 인터프리터는 조금 다른 방식이 있는데 런타임이 실행되기전에 프로그램 전체를 간단하게 훑어서 선언된것들에 대해 미리 메모리에 자리를 할당해놓는다.
함수는 있어야 할 자리에서 선언되고 할당이 되어야 하는게 맞는것이며,
미리 할당을 해놓고나 하면 이것은 프로그램 전역에 지대한 혼란을 불러오기 쉽다.
그렇기에 함수는 표현식을 통한 선언이 되어야 맞는것이다.