TIL-24.05.21

실행 컨텍스트
실행 컨텍스트(Execution Context)는 JavaScript 코드가 실행될 때 생성되는 환경을 나타냅니다. 이 환경에는 코드가 실행되는데 필요한 여러 정보들이 포함되어 있습니다. 실행 컨텍스트는 스택(Stack) 자료 구조로 관리되며, 가장 최근에 생성된 실행 컨텍스트가 스택의 맨 위에 위치합니다.
실행 컨텍스트는 다음과 같은 요소들로 구성됩니다.
Variable Environment (변수 환경)
현재 실행 중인 코드에 대한 변수들과 함수 선언이 포함되어 있습니다.
전역 컨텍스트의 경우 전역 객체와 전역 변수들이 포함됩니다.
Lexical Environment (어휘 환경)
변수 환경과 유사하지만, 스코프 체인(Scope Chain)과 함께 클로저(Closures)를 위한 정보를 포함합니다.
렉시컬 스코프(lexical scope)에 따라 변수들이 유효한 범위를 결정합니다.
This Binding (this 바인딩)
현재 실행 중인 코드에서 this 키워드가 참조하는 객체를 결정합니다.
Outer Environment (외부 환경)
현재 실행 컨텍스트와 관련된 외부(상위) 실행 컨텍스트에 대한 참조를 가집니다. 이것이 클로저를 형성하는데 중요한 역할을 합니다.
Code Execution State (코드 실행 상태)
현재 코드의 실행 위치를 나타내는 포인터가 있으며, 코드의 실행이 일시 중단된 경우에는 이 상태를 유지합니다.
Scope Chain (스코프 체인)
현재 실행 중인 코드가 접근할 수 있는 변수들의 범위를 결정하는데 사용됩니다. 이는 렉시컬 스코프에 따라 결정됩니다.
Closure (클로저)
내부 함수가 외부 함수의 변수에 접근할 수 있는 현상을 가리킵니다. 클로저는 외부 함수가 반환된 후에도 외부 함수의 변수에 접근할 수 있도록 합니다.
이러한 실행 컨텍스트는 함수 호출, 전역 코드 실행, eval() 함수 실행 등과 같은 JavaScript 코드 실행 시 생성됩니다. 코드 실행이 완료되면 해당 실행 컨텍스트는 스택에서 제거되며, 실행이 계속됩니다.