1. 컨텍스트
ㅇ `상황, 맥락, 문맥 상의 의미` 등으로 이해되는 용어
ㅇ 사실상, 컨텍스트는,
- 그냥 텍스트(Text) 처럼 바로 이해되는 단순히 원본 정도가 아니라,
- 어떤 해석이 가미되어 문맥 및 상황에 따라 이해되는 한 차원 높은 공간, 영역을 의미
ㅇ 전산 뿐만 아니라 방송, 예술 등의 분야에서도 널리 사용되는 용어
2. [전산] 컴퓨터 내부 (하드웨어 관점)
ㅇ 컨텍스트는 컴퓨터 내부에서 볼 때,
- 프로세서 안에 있는 레지스터, 플래그 등의 현재 값/상태들의 집합을 말함
ㅇ Context Switching (문맥 교환)
- 멀티태스킹 작업을 수행하면서, 각 태스크들을 순서있게 교체 수행하면서,
- 태스크 상태 정보를 레지스터들에 저장 또는 이전 상태를 불러오기위한 작업으로,
- 실제 프로그램을 수행하는 작업은 아님
3. [전산] 프로그램 내부 (소프트웨어 관점)
ㅇ 그때그때 상황에 맞게끔, 실행/판단/결정 등을 해야하는 부분
- 例) 할당 연산자(=) 다음에는, 표현식 컨텍스트가 옴
- 例) if 조건문 다음에 { 가 오면, 문장 컨텍스트가 옴
- 例) 컨텍스트 메뉴 (context menu)
. 그 메뉴를 호출한 동작 및 상황에 따라 다양한 선택 사항들이 나열되는 메뉴
4. [전산] 자바스크립트 실행 컨텍스트 (Execution Context)
ㅇ 실행에 필요한 다양한 정보를 형상화하고, 이들을 목록화 관리하기 위한, 추상적인 개념
- 실행 가능한 코드가 실행되는 프로그램 환경
. 현재 실행중인 부분
- 결국, 실행에 필요한 정보들로써,
. 변수 등의 유효 범위(Scope),유효 기간(Lifetime)의 결정을 위한 환경 정보들
. 실행에 필요한 정보들의 例)
.. 변수들 (전역변수, 지역변수, 매개변수, 객체의 프로퍼티)
.. 함수 선언 정보
.. 변수의 유효범위(Scope)
.. this가 가리키는 것 등
ㅇ 실행 컨텍스트의 관리 및 보유 형태
- 관리 형태
. 실행에 필요한 여러 정보들을, 객체 형태로 담아 스택(LIFO)으로 관리
- 보유 형태
. { 렉시컬 환경 : (환경 레코드 + 외부 렉시컬 환경에 대한 참조) }
ㅇ 만일, 자바스크립트 엔진이,
- 실행 가능한 코드를 만나면, 그 코드를 평가해서, 실행 컨텍스트를 만들어냄
. 例) 만일 함수를 호출하면,
.. 현재 실행중인 코드의 작업을 잠시 멈추고,
.. 실행 컨텍스트 영역을 생성하고,
.. 실행 흐름이 그 실행 컨텍스트로 이동하여,
.. 함수 안팎의 환경을 찾아내어, 그 정보들을 보유하게 됨
- 실행 가능한 코드의 例)
. 전역 코드 : 가장 바깥쪽에 존재하는 것
. 함수 코드
. eval 함수
. 모듈 코드