본문 바로가기

웹 개발

실행 컨텍스트에 대해 알고 계시나요?

실행 컨텍스트에 대해 조금이라도 이해 하고자 한다
단번에 알 수 있는 개념은 아니기에 조금씩 알아가게 되는 부분을 추가 하도록 한다

실행 컨텍스트

실행 컨텍스트(Execution Context)는 scope, hoisting, this, function, closure 등의 동작원리를 담고 있는 자바스크립트의 핵심원리이다 실행 컨텍스트를 바로 이해하지 못하면 코드 독해가 어려워지며 디버깅도 매우 곤란해 질 것이다

 

실행 컨텍스트를 ECMAScript 스펙에 따르면 이렇게 정의하고 있다

"실행 가능한 코드를 형상화하고 구분하는 추상적인 개념"

 

쉽게 말하자면 실행 컨텍스트는 실행 가능한 코드가 실행되기 위해 필요한 환경이라고 말할 수 있겠다

여기서 말하는 실행 가능한 코드는 아래와 같다

  • 전역 코드 : 전역 영역에 존재하는 코드
  • Eval 코드 : eval 함수로 실행되는 코드
  • 함수 코드 : 함수 내에 존재하는 코드

일반적으로 실행 가능한 코드는 전역 코드와 함수 내 코드이다.

 

자바스크립트 엔진은 코드를 실행하기 위하여 실행에 필요한 여러 가지 정보를 알고 있어야 한다

실행에 필요한 여러가지 정보란 아래와 같은 것들이 있다

  • 변수 : 전역 변수, 지역변수, 매개변수, 객체의 프로퍼티
  • 함수 선언
  • 변수의 유효 범위(Scope)
  • this

 

Global Execution Context(전역 코드에서의 실행컨텍스트)

  • window 전역 컨텍스트를 생성한다.
  • this를 전역 객체(Global Object)로 설정한다.

Functional Execution Context(함수 코드에서의 실행컨텍스트)

  • 함수가 호출될 때마다 해당 함수에 대한 새로운 실행 컨텍스트가 생성된다.
  • 각 함수 별로 실행 컨텍스트를 가지고 있지만 실행 컨텍스트는 함수가 호출될 때 만들어진다.
  • 함수 실행 컨텍스트는 새로운 실행 컨텍스트가 생성될 때마다 차례대로 수행된다.

Eval Function Execution Context

  • eval 함수 내에서 실행되는 코드도 실행 컨텍스트를 가진다 하지만 보안상의 문제로 eval은 잘 사용되지 않기 때문에 추후 내용 공부가 필요할 때 다루도록 한다

 

[참고]

https://catsbi.oopy.io/fffa6930-ca30-4f7e-88b6-28011 fde5867 원글

https://poiemaweb.com/js-execution-context 원글