공부
[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