실행 컨텍스트 스택

박경찬·2022년 7월 7일
0

JavaScript

목록 보기
9/26

전역코드를 평가하여 전역 실행 컨텍스트를 생성한다. 그리고 함수가 호출되면 함수 코드를 평가하여 함수 실행 컨텍스트를 생성한다.

이때 생성된 실행 컨텍스트는 스택 자료구조 관리된다. 이를 실행 컨텍스트 스택 이라고 부른다.
위 코드를 실행하면 코드가 실행되는 시간의 흐름에 따라 실행 컨텍스트 스택에는 다음과 같이 실행 컨텍스트가 추가 되고 제거 된다.

전역코드의 평가와 실행 전역 변수 x와 전역 함수 foo 는 전역 실행 컨텍스트에 등록 이후 전역 코드가 실행되기 시작 하여 전역 변수 x에 값이 할당 이후 foo 호출
foo 함수 코드의 평가와 실행 전역 함수 foo가 호출되면 전역 코드의 실행은 중단 , 함수 내부로 진입, foo함수 코드를 평가하여 foo함수 실행 컨텍스트를 생성하고 실행 컨텍스트에 푸시한다. 이때 중첩 함수 bar가 foo함수 실행 컨텍스트에 등록된다.
bar함수 코드의 평가와 실행 중첩함수 가 호출되면 foo함수코드의 실행은 일시 중단,bar 함수 내부의 함수 코드를 평가하여 bar함수 실행 컨텍스트를 생성하고 실행컨텍스트 스택에 푸시한다.
foo함수 코드로 복귀 중첩함수가 종료되면 코드의 제어권은 foo함수로 이동,자바스크립트는 foo함수 실행 컨텍스트를 실행 컨텍스트 스택에서 팝하여 제거
전역코드로 복귀 함수가 종료되면 코드의 제어권은 다시 전역 코드로 이동, foo 함수 실행 컨텍스트 스택의 최상위 쌓인다. 실행 컨텍스트 스택의 최상위에 존재하는 실행 컨텍스트는 언제나 현재 실행중인 코드의 실행 컨텍스트다. 따라서 실행 컨텍스트 스택의 최상위 존재하는 실행 컨텍스트를 실행 중인 실행 컨텍스트라 부른다.

0개의 댓글