실행 컨텍스트(execution context)는 실행할 코드에 제공할 환경 정보들을 모아놓은 객체입니다.
JS 엔진은 새로운 실행 컨텍스트를 구성할 때 해당 실행 컨텍스트와 관련된 코드들을 실행하는 데 필요한 환경 정보들을 수집해서 실행 컨텍스트에 저장하고 이를 실행 컨텍스트 스택에 쌓아올려, 가장 위에 쌓여있는 컨텍스트와 관련 있는 코드를 실행하게 됩니다.
실행 컨텍스트는 JS엔진이 활용할 목적으로 생성할 뿐 개발자가 코드를 통해 확인할 수는 없습니다.
실행 컨텍스트 스택은 실행 컨텍스트를 추적하는 데 사용되는 스택으로서, 활성화된 실행 컨텍스트는 항상 이 스택의 최상위 요소입니다.
활성화된 실행 컨텍스트와 관련되지 않은 코드로 제어가 이전될 때 새로운 실행 컨텍스트가 생성됩니다.
새로 생성된 실행 컨텍스트는 스택에 푸시되고 활성화된 실행 컨텍스트가 됩니다.
전역공간: 자동으로 생성됩니다. 브라우저 환경에서는 window
, node.js에서는 global
입니다.
eval() 함수
함수 실행
블록(ES 6+)
VariableEnvironment:선언 시점의 현재 컨텍스트 내의 식별자들에 대한 정보와 외부 환경 정보로서, 코드가 실행되어도 변경 사항은 반영되지 않습니다.
LexicalEnvironment: 현재 컨텍스트 내의 식별자들에 대한 정보와 외부 환경 정보로서, 코드의 실행에 따라 변경 사항이 반영됩니다.
ThisBinding: 함수 실행시 묵시적으로 전달되는 매개변수 this에 해당하는 객체
실행컨텍스트 정말어렵네요ㅠ 저도 공부해야겠습니다