실행 컨텍스트

wonway·2024년 2월 23일
0
post-thumbnail

요약

실행 컨텍스트는 코드가 실행되는 환경이다.

코드의 순서에 따라 콜스택에 전역 실행 컨텍스트가 추가된 뒤에 함수 실행 컨텍스트가 쌓이면서 순차적으로 실행, 종료된다.

실행 컨텍스트를 통해 식별자의 결정이 효율적이게 된다.

정의

자바스크립트 코드가 평가되고 실행되는 환경이다.

전역 실행 컨텍스트와 함수 실행 컨텍스트가 있다.

동작 원리 (간략하게)

  1. 자바스크립트 실행
  2. 전역 실행 컨텍스트 생성
  3. 함수 코드를 만나면 함수의 실행 컨텍스트 생성
  4. 함수의 실행 컨텍스트 종료
  5. 전역 실행 컨텍스트 종료

실행 컨텍스트는 코드의 순서에 따라 실행, 종료 된다.

자바스크립트 코드가 다루는 모든 정보가 실행 컨텍스트에 담겨서 사용된다.

동작 원리 (단계별 설명 추가)

  1. 자바스크립트 코드 실행 시작: 스크립트 또는 프로그램을 실행하면, 자바스크립트 엔진은 가장 먼저 전역 실행 컨텍스트(Global Execution Context)를 생성한다. 이는 스크립트의 전역 변수와 함수를 관리하며, 프로그램이 실행되는 동안 기본적으로 활성 상태이다.
  2. 전역 실행 컨텍스트 생성: 전역 실행 컨텍스트는 코드 내의 전역 변수와 함수 선언을 수집한다. 이 단계에서 변수는 "undefined"로 초기화되고, 함수 선언은 전체가 메모리에 할당된다(호이스팅).
  3. 함수 호출: 코드 실행 중 함수가 호출되면, 그 순간 자바스크립트 엔진은 해당 함수에 대한 새로운 함수 실행 컨텍스트(Function Execution Context)를 생성합니다. 이 컨텍스트는 함수의 매개변수, 지역 변수, 그리고 함수 내부에서 사용되는 다른 함수들을 관리한다.
  4. 함수 실행 컨텍스트 동작: 함수 실행 컨텍스트가 활성화되면, 함수 내부의 코드가 실행된다. 이 과정에서 지역 변수가 사용되고, 함수 내부에서 다른 함수가 호출될 수도 있다. 함수 내부에서 다른 함수를 호출하면, 동일한 과정(새로운 실행 컨텍스트 생성)이 반복된다.
  5. 함수의 실행 컨텍스트 종료: 함수의 코드 실행이 완료되면, 해당 함수의 실행 컨텍스트는 작업이 끝났음을 나타내고 호출 스택에서 제거된다. 이때, 함수 내에서 생성된 모든 지역 변수와 함수 실행에 관련된 정보는 메모리에서 제거된다.
  6. 전역 실행 컨텍스트 종료: 프로그램의 실행이 모두 완료되고, 전역 공간에서의 작업이 끝나면, 전역 실행 컨텍스트도 종료되고 호출 스택에서 제거된다. 이는 프로그램이나 스크립트가 완전히 종료되었음을 의미한다.

call stack

  • 일반적인 컴퓨터의 자료구조 stack의 일부
  • 함수의 호출과 실행을 관리하는 자료 구조를 의미함

콜스택에 실행 컨텍스트가 담긴다.

LIFO(Last In, First Out) 구조이다, 프링글스 통에 물체를 넣었다가 꺼내는 구조를 이미지하면 된다.

전역 실행 컨택스트를 먼저 집어 넣고 그 위에 함수 실행 컨텍스트가 차곡차곡 쌓인다.

종료할 때는 손이 닿는 위에서부터 꺼내게 된다.

마지막에 꺼내는 것이 전역 실행 컨텍스트가 된다.

이러한 함수 실행 순서를 call stack이라고 한다.

배열의 경우도 스택 자료구조를 따르기 때문에 push(), pop() 메서드의 동작을 생각하면 동일한 구조라는 것을 알 수 있다.


연관 키워드

스코프 체인

호이스팅

클로저

profile
문제를 컴퓨터로 해결하는 데서 즐거움을 찾는 프론트엔드 개발자

0개의 댓글