JavaScript의 실행 컨텍스트 (Execution Context)

eeensu·2023년 8월 25일
0

javascript

목록 보기
4/31
post-thumbnail

실행 컨텍스트 (Execution Context)

실행 컨텍스트(Execution Context)는 자바스크립트 코드의 실행 정보를 추상화한 개념으로, 코드가 실행되기 위해 필요한 모든 정보를 담고 있는 환경을 뜻한다. 실행 컨텍스트는 코드의 실행에 필요한 변수, 함수 선언, 스코프 정보 등을 관리하며, 코드 실행 중에 발생하는 동작들을 제어한다.




구성 요소

  • 변수 환경 (Variable Environment)
    해당 컨텍스트(환경)내에서 선언된 변수 및 함수의 식별자와 값을 저장하는 공간이다.

  • 외부 환경 (Outer Environment)
    현재 실행 컨텍스트와 관련 있는 외부 컨텍스트(상위 스코프)를 가리키는 참조이다. 이를 통해 스코프 체인(Scope Chain)을 형성하여 변수 및 함수를 검색할 수 있다.

  • this 바인딩
    함수가 어떻게 호출되었는지에 따라 결정되는 this 값을 가리킨다. 일반 function 키워드로 호출한 함수와 arrow function은 this 의 스코프가 다르므로 주의해야 한다. 물론 this를 명시적으로 바인딩할 수도 있다.



실행 컨텍스트의 생성과 관리

자바스크립트 엔진은 코드를 실행하기 전에 해당 코드의 실행 컨텍스트를 생성하고 초기화한다.

  • 전역 컨텍스트(Global Context)
    코드 실행이 시작되면 가장 먼저 전역 컨텍스트가 생성된다. 이는 최상위 스코프를 나타내며, 전역 변수와 전역 함수를 관리한다.

  • 함수 컨텍스트(Function Context)
    함수가 호출되면 새로운 함수 컨텍스트가 생성된다. 해당 함수 내의 변수 및 함수 선언이 해당 컨텍스트의 변수 환경에 등록된다.



실행 컨텍스트의 동작 원리

  • 변수 및 함수 호이스팅
    실행 컨텍스트가 생성될 때, 해당 컨텍스트 내에서 선언된 변수와 함수 선언이 메모리에 저장되지만, 코드 실행이 시작되기 전까지 실제 값이나 함수의 실행은 이루어지지 않는다. 이로 인해 변수 및 함수 선언은 선언된 위치와 관계없이 스코프 내에서 어디서든 참조할 수 있다.

  • 스코프 체인 생성
    실행 컨텍스트는 자신의 변수 환경 뿐만 아니라 외부 환경(상위 스코프)의 변수도 참조할 수 있는 스코프 체인을 생성한다.



실행 컨텍스트의 종료

실행 컨텍스트는 코드 실행이 완료되면 파괴된다. 함수 실행이 완료되면 해당 함수 컨텍스트가 제거되고, 전역 실행이 끝나면 전역 컨텍스트도 제거된다.

실행 컨텍스트는 스택(Stack)에 쌓여서 관리되며, 코드 실행 중에 새로운 함수가 호출되면 새로운 컨텍스트가 생성되어 스택에 추가된다. 함수 실행이 완료되면 해당 컨텍스트가 스택에서 제거되고 이전 컨텍스트로 돌아가는 구조이다.



이러한 실행 컨텍스트의 동작 원리를 통해 스코프, 클로저, 호이스팅 등의 동작 원리를 이해하고, 변수와 함수의 유효 범위 및 동작 방식을 파악할 수 있다.

profile
안녕하세요! 26살 프론트엔드 개발자입니다! (2024/03 ~)

0개의 댓글