호이스팅이란

이의섭·2022년 3월 14일
0

면접

목록 보기
2/4

호이스팅이란?

자바스크립트엔진은 함수가 실행될때, ES6이후부터는 블럭({})이 생성될 때, 실행 컨텍스트가 생성되어 콜스택에 차례대로 들어가게 됩니다. 실행 컨텍스트는 실행할 코드에 제공할 환경 정보들을 모아놓은 객체로 함수가 실행될때나, 블럭레벨의 코드를 실행할 때 해당 시점에서 선언된 변수들을 관리하는 객체입니다.

따라서 실행 컨텍스트에는 현재 컨텍스트 내의 식별자들에 대한 정보 + 외부 환경정보, this값들이 저장되게 됩니다. 여기서 식별자들에 대한 정보들은 환경레코드라는 모든 지역 변수를 프로퍼티로 저장하는 객체에 저장되는데, 모든 지역 변수들이 함수를 실행할때나, 블록을 생성할 때 해당 스코프를 한번 쭉 보면서 선언한 식별자들을 미리 파악해놓는 동작방식을 바로 호이스팅이라고 합니다.

호이스팅은 코드 해석을 좀 더 수월하게 하기 위해 환경레코드의 수집 과정을 추상화한 개념으로, 실행 컨텍스트가 관여하는 코드 집단의 최상단으로 이들을 '끌어올린다'고 해석하는 것 입니다. 변수 선언과 값 할당이 동시에 이뤄진 문장은 '선언부'만을 호이스팅하고, 할당 과정은 원래 자리에 남아있게 되는데, 여기서 함수 선언문과 함수 표현식의 차이가 발생합니다.

profile
사용자 중심 생각하는 프론트엔드 개발자가 되고 싶은..

0개의 댓글