자바스크립트에서는 다른 코드보다 함수 선언 부를 더 먼저 읽는다. 이는 Global 영역에 선언된 변수나 함수를 인터프리터가 최우선의 영역으로 끌어올려 Global 속성에 추가하기 때문이다. 이를 호스팅이라 한다. 따라서 선언문 형태로 선언한 함수는 함수 호출문의 먼저 나온다고 하더라도 자바 스크립트 엔진이 함수를 끌어올려 실행하므로 오류가 발생하지 않는다. 이렇게 되면 선언되기도 전에 실행이 되는 엉성한 구조가 되어 명확한 코드로 관리하기가 쉽지 않고 너무 많이 Global 영역에 추가하게 되면 실제 실행될 코드의 실행 시점이 늦어지며 클라이언트에게 response할 시간이 늦어지게 된다. 따라서 많은 자바스크립트 전문가들은 함수를 선언문 형태로 선언하여 사용하기보다는 표현식으로 사용하기를 권하고 있다.

F12를 누르고 개발자 모드로 전환한 후 중단점을 찍는다. 브라우저 내부에서 한 단계 실행을 한 후 조사식 창을 확인하면 다음과 같이 Global 속성으로 test 함수가 추가된 것을 확인할 수 있다.

 

 

다음과 같은 코드를 작성하고 테스트해보자.

 

위의 코드는 간단한 예제지만 함수 호이스팅의 예를 보여주고 있다. test함수가 정의되기 전에 10라인에서 함수를 호출하고 있다. 실행하면 결과가 정상적으로 출력되는 것을 확인할 수 있다.

' > javascript' 카테고리의 다른 글

DOM(Document Object Model)  (0) 2019.07.15
함수의 표현식  (0) 2019.07.15
자바스크립트 함수  (0) 2019.07.15
브라우저 동작 원리  (0) 2019.07.09
자바스크립트 문법 - 연산자  (0) 2019.07.08

+ Recent posts