본문 바로가기

학습 내용 정리/javascript

호이스팅

728x90

호이스팅

자바스크립트 엔진은 소스코드를 실행하는 런타임 이전에 소스코드의 평가 과정을 거치면서 소스 코드를 실행하기 위한 준비를 한다.

소스코드 평가 과정에서 모든 선언문(변수 선언문, 함수 선언문 등)을 찾아내 먼저 실행한다. 

이 특징을 호이스팅이라고 한다. 

평과 과정이 끝나면 모든 선언문을 제외한 소스코드를 한 줄씩 순차적으로 실행한다. 

 

- 함수 호이스팅

함수 선언문 : 호이스팅 가능

함수 표현식 : 호이스팅 불가 (함수 표현식 = 함수 객체를 변수에 할당한 것, 즉 할당이기 때문에 런타인 시점에서 동작)

 

* 함수 선언문은 함수 객체 생성이고 변수 선언문은 변수에 값을 할당하는 것이기 때문에 

호이스팅이 일어날 때 함수 선언문은 함수 객체를 실행할 수 있지만

변수 선언문은 변수의 실행 시점이 아닌데 호출되었다면 undefined를 반환한다.

 

* 함수 표현식으로 정의하면 식별자에 할당이기 때문에 변수 호이스팅이 발생한다. 

 

참고자료 : 모던 자바스크립트 딥 다이브

 

 

 

 

 

 

 

 

'학습 내용 정리 > javascript' 카테고리의 다른 글

실행 컨텍스트와 클로저  (0) 2023.08.04
브라우저의 렌더링 과정  (0) 2023.08.04
가비지 콜렉터와 매니지드 언어  (0) 2023.08.04
javascript Error Handling  (0) 2023.08.03
Promise  (0) 2023.08.03