JS2

calmpond·2023년 10월 4일
0

JS

목록 보기
2/3

실행컨텍스트

실행할 코드에 제공할 환경 정보들을 모아놓은 객체를 '실행 컨텍스트'라고 한다.
해당 객체는 활성화되는 시점(함수 호출 시점)에서 VariableEnvironment, LexicalEnvironment, ThisBinding의 정보를 수집한다. 첫번째 두번째는 식별자들을 수집하고, 마지막은 this가 무엇을 가리키는지 저장한다.

JS파일이 처음 열리면서 전역 컨텍스트가 콜스택에 담기게 되고, 그 이후로 함수가 호출될때마다 해당 함수의 실행컨텍스트가 순차적으로 콜스택에 담기게 된다. 그리고, 해당 함수안의 모든 코드가 실행을 마치면 해당 함수의 실행컨텍스트는 콜스택에서 빠져나가게 된다.

LexicalEnvironment안의 EnvironmentRecord와 outerEnvironmentReference가 있다.
첫번째는 호이스팅이 일어나는 원인으로, 함수안의 모든 식별자들을 코드실행전에 미리 수집한다.
두번째는 현재 실행컨텍스트의 함수가 선언된 시점의 환경을 기억한다.(스코프체이닝이 일어날 수 있는 이유)

크롬브라우저 debugger


크롬브라우저 debugger 키워드를 통해 (breakpoint=중단점) 현재 함수 내부 변수의 정보들과 어떤 실행컨텍스트를 실행중인지를 알 수 있었다.

0개의 댓글