공부

[JS] 실행 컨텍스트(Execution Context)

hahihuree 2021. 10. 1. 18:03

  실행 컨텍스트  

  • scope, hoisting, this, function, closure 등의 동작원리를 담고 있는 자바스크립트의 핵심원리.
  • 코드가 실행되고 있는 범위에 대한 개념.

 

1. 실행 컨텍스트의 세가지 타입

 

Global Execution Context

  • 자바스크립트 엔진이 스크립트 파일을 실행하기에 앞서 가장 먼저 글로벌 실행 컨텍스트가 생성됨.
  • 프로그램에 오직 하나만 존재.

 

Functional Execution Context

  • 글로벌 컨텍스트가 코드를 실행하다가 함수 실행문을 만나면 함수 실행 컨텍스트가 생성되고 스택에 쌓임.

 

Eval function Execution Context

  • 자바스크립트 환경에서는 잘 사용하지 않음.

 

2. 실행 스택

  • 흔히 실행 컨텍스트를 구성하는 방법은 함수를 실행하는 것.
  • 실행에 필요한 정보: 변수, 함수 선언, 변수의 유효범위(Scope), this

실행 컨텍스트가 실행 되었을 때 콜스택의 변화

 

  3가지 객체  

실행 컨텍스트는 실행 가능한 코드를 형상화하고 구분하는 추상적인 개념이지만 물리적으론 객체의 형태를 가지며 3가지 프로퍼티를 소유함.

 

1. 변수 객체(Variable Object)

  • 변수, 매개변수(parameter), 인수(arguments), 함수선언을 담는 객체.
  • 코드가 실행될 때 엔진에 의해 참조되며 코드에서는 접근할 수 없음.
  • 실행 컨텍스트의 프로퍼티이기 때문에 값은 갖으며, 이 값은 다른 객체를 가리킴.

 

전역 컨텍스트에서

  • 변수 객체는 유일하며 최상위에 위치하고 모든 전역 변수, 전역 함수 등을 포함하는 전역 객체를 가리킴.
  • 전역 객체(Global Object)는 전역에 선언된 전역 변수와 전역 함수를 프로퍼티로 소유.

 

함수 컨텍스트에서

  • 변수 객체는 활성객체(Active Object)를 가리킴.
  • 매개변수와 인수들의 정보를 배열의 형대로 담고 있는 객체인 arguments object가 추가 됨.

 

2. 스코프 체인(Scope Chain)

  • 스코프란 변수의 유효범위로 어디서 어떻게 선언되었는지에 따라 결정됨.
  • 자바스크립트 엔진은 변수를 찾을 때, 일단 자신이 속한 스코프에서 찾고 그 스코프에 해당 변수가 없으면 상위 스코프로 찾아 나감. 이를 스코프 체인이라고 함.

 

3. this value

  • this에 할당되는 값은 함수 호출 패턴에 의해 결정됨.
  • this value가 결정되기 전에 this는 전역 객체를 가리킴.

 

 

 

 

참고 https://www.juicylog.com/executrioncontext

참고 https://dev.to/ahmedtahir/what-is-the-execution-context-execution-stack-scope-chain-in-js-26nc

참고 https://poiemaweb.com/js-execution-context