Execution Context [1]

Marullo·2021년 3월 22일
2
post-thumbnail

Execution Context

함수가 호출되엇을 때, 함수 내부의 코드가 실행될 수 있도록 만들어진 환경이자, 함수의 결과가 저장되는 영역이다. 함수의 모든 처리는 이 "실행 컨텍스트" 안에서 이뤄진다. 즉 실행 컨텍스트는, 실행 가능한 코드를 "실행하기 위한 환경"이다.

  • 함수 내부에 존재하는 변수나 함수나 JS엔진이 함수를 실행하기 위한 여러 정보들을 묶은 것이다. 함수 단위로 실행컨텍스트가 존재한다고 생각하면 될 것 같다.


Call Stack & Execution Context

자바스크립트의 기본적인 실행 흐름은 콜스택에 실행컨텍스트가 쌓이거나 빠지면서 이뤄진다.

  1. Javascript 엔진은 함수를 실행하기 전, 함수를 실행하기 위한 환경(실행컨텍스트)을 만든다.
  2. 만들어진 실행컨텍스트를 Call Stack에 push하고 엔진은 방금 삽입한 실행 컨텍스트로 컨트롤을 옮긴다.
  3. 실행컨텍스트 초기화를 진행한다.
    • 함수 내부에 위치한 변수나 함수를 key-value 형태로 실행 컨텍스트에 저장한다.
  4. 초기화 과정이 끝나면 코드를 실행한다.

자바스크립트는 "정적인 환경"을 갖는다.

실행 환경을 동적으로 만드는 것이 아니다. 코드를 실행할 때마다 환경이 재정의 되는 것이 아니라, 함수 내부 코드를 실제로 실행하기 전에 "실행 컨텍스트"라는 이름으로 딱 한 번 정의되기 때문이다. (Global Context는 실행환경이 동적으로 결정된다.)



왜 Execution Context라는 묶음을 사용하는가?

  • 실행컨텍스트 단위로 메모리에 로드되어, 식별자 해결(Identifier Resolution)에서 효율성을 달성 할 수 있다. 함수나 변수를 찾기 위해 현재의 컨텍스트를 벗어나 다른 메모리 주소로 접근 할 필요가 없기 때문이다.
  • 만약 실행컨텍스트가 아니라, 함수의 변수나 내부의 함수를 따로 메모리에 로드해둔다면, 엔진은 메모리에 접근하여 사용하려는 변수나 함수를 찾아야하기 때문이다. 이렇게되면 엔진 처리도 복잡해지고 시간도 오래걸릴 것이다.


Next

Execution Context의 동작 원리를 알기 위해, Lexical Environmet에 대한 포스팅을 하겠습니다.



profile
한국외대 중국어&컴공 복수전공 - 세미 전공자의 기술 블로그

0개의 댓글