실행 컨텍스트 (Execution Context)
- 자바스크립트 코드들이 실행되기 위한 환경을 의미한다. 여기서 말하는 자바스크립트는 크게 세 가지가 존재한다.
1) 전역 코드 : 전역 영역에 존재하는 코드
2) 함수 코드 : 함수 내부에 존재하는 코드
3) eval 코드 : eval 함수로 실행되는 코드
그러나 eval 함수는 해커가 악의적으로 이용할 가능성이 있기 때문에 사용이 지양된다. 따라서 실질적으로 사용되는 코드는 전역 코드와 함수 코드라고 보면 된다.
- 실행 컨텍스트에는 전역 컨텍스트와 함수 컨텍스트 두 종류가 있다.
- 실행 컨텍스트는 코드를 형상화하고 구분하는 추상적인 개념이지만 자바스크립트 엔진에 의해 물리적 객체 형태로 관리되며 3가지 프로퍼티를 가진다.
(1) 변수객체 (Variable Object)
변수 객체에는 변수, 매개변수(parameter), 인수 정보(argument), 함수 선언(함수 표현식 제외)이 들어간다. 전역 컨텍스트의 경우 모든 전역 변수, 전역 함수 등이 포함되기 때문에 전역 객체(GO, Global Object)라고 표현하며 함수 컨텍스트의 경우 지역 변수, 내부 함수, arguments 정보가 포함되며 활성 객체(AO, Activation Object)라고 표현한다. 전역 컨텍스트와 함수 컨텍스트 간 가장 큰 차이는 arguments 정보의 유무라고 볼 수 있다.
(2) 스코프 체인 (Scope Chain)
스코프 체인은 바로 상위의 함수부터 전역 영역까지의 활성 객체 혹은 전역 객체가 담겨져 있는 리스트이다. 현재 scope에서 선언되지 않은 변수를 호출하는 경우 스코프 체인을 통해 바로 상위의 활성 객체부터 전역 객체까지 해당 변수(혹은 함수)를 탐색할 수 있다. 만약 스코프 체인을 통해서 모든 영역을 탐색했는데도 변수를 찾지 못했다면 Reference Error가 발생한다.
(3) this
this에 들어가는 값이 할당된다.
- 프로그램이 실행될 때 실행 컨텍스트의 동작 과정
(1) 프로그램을 실행하면 실행 컨텍스트 스택이 생성된다.
(2) 전역 코드로 컨트롤이 진입하면서 전역 컨텍스트가 생성되고 실행 컨텍스트 스택에 쌓인다.
(3) 함수가 호출될 때마다 함수 컨텍스트가 스택에 쌓인다.
(4) 스택 맨 위에 위치한 컨텍스트가 컨트롤을 보유한다. 함수가 종료되면 해당 컨텍스트는 파기된다. 컨텍스트가 보유하던 컨트롤은 직전에 실행된 실행 컨텍스트로 반환된다.
'프론트엔드 기본개념 복습 > Javascript' 카테고리의 다른 글
[Javascript] 클로저 (Closure) + Lexical Scope (0) | 2022.02.24 |
---|---|
[Javascript] this (0) | 2022.02.24 |
[Javascript] 이벤트 루프 (Event Loop) (0) | 2022.02.23 |
[Javscript] Symbol 타입 (0) | 2022.01.30 |
2021-09-25 자바스크립트 기본 특징 (0) | 2021.09.26 |