#자바스크립트에서 실행 컨텍스트에 대해 설명하시오.
실행 컨텍스트란 실행 가능한 코드가 실행되기 위해 필요한 환경을 뜻한다.
- 소스코드의 평가와 실행
모든 소스코드는 실행에 앞서 평가 과정을 거치며 코드를 실행하기 위한 준비를 한다.
소스코드 과정에서는 실행 컨텍스트를 생성하고 변수, 함수 등의 선언문만 먼저 실행하여 생성된 변수나 함수 식별자를 키로 실행 컨텍스트가 관리하는 스코프(렉시컬 환경의 환경 레코드)에 등록한다.
소스코드 평가 과정이 끝나면 런타임(선언문을 제외한 소스코드가 순차적으로 실행됨)이 시작된다.
이때, 소스코 실행에 필요한 정보(변수나 함소의 참조)를 실행 컨텍스트가 관리하는 스코프에서 검색해서 취득한다. 그리고 값의 변경 등 실행 결과는 다시 실행 컨텍스트가 관리하는 스코프에 등록된다.
자바스크립트 엔진은 코드를 실행하기 위하여 실행에 필요한 여러가지 정보를 알고 있어야 한다. 실행에 필요한 여러가지 정보란 아래와 같은 것들이 있다.
변수 (전역변수, 지역변수, 매개변수, 객체의 프로퍼티), 함수 선언, 변수의 유효범위(Scope), this
이와 같이 실행에 필요한 정보를 형상화하고 구분하기 위해 자바스크립트 엔진은 실행 컨텍스트를 물리적 객체의 형태로 관리한다
- 실행 컨텍스트의 역할
자바스크립트 엔진이 코드를 읽으며 실행 컨텍스트가 무슨 역할을 하는지 설명하겠다.
1. 전역 코드 평가
전역 코드 평가로 변수 선언문, 함수 선언문을 실행하고 그 결과 생성된 전역 변수,함수가 실행 컨텍스트가 관리하는 전역 스코프에 등록된다.
동시에 var키워드로 선언된 변수, 함수는 전역 객체의 프로퍼티, 메서드가 된다.
2. 전역 코드 실행
평가 과정이 끝나면 런타임이 시작된다. 전역 변수에 값이 할당되고 함수가 호출된다.
함수가 호출되면 전역 코드의 실행을 일시 중단하고 코드 실행을 함수 내부에서 하게된다.
3. 함수 코드 평가
함수 코드 평가 과정을 거치며 매개변수, 지역 변수 선언문이 실행되고 그 결과 생성된 매개변수와 지역 변수가 실행 컨텍스트가 관리하는 지역 스코프에 등록된다.
또한 함수 내부에서 지역 변수처럼 사용할 수 있는 arguments 객체가 생성되어 지역 스코프에 등록되고 이때 this바인딩도 결정된다.
4. 함수 코드 실행
함수 코드 실행을 위한 준비를 마쳤으니 런타임이 시작되어 실행된다.
매개변수, 지역 변수에 값이 할당되고 만약 메서드 호출이나 식별자를 만나게 되면 스코프 체인을 통해 검색한다.
(사용되는 변수들은 변수 객체 안에서 값을 찾고, 없다면 스코프 체인을 따라 올라가며 찾는다.)
함수 코드 실행 과정이 종료되면, 함수 호출 이전으로 돌아가 전역 코드 실행을 계속하고 마침내 종료된다.
이처럼 코드가 실행되려면 스코프, 식별자, 코드 실행 순서 등의 관리가 필요한데, 이 모든 것을 관리하는 것이 실행 컨텍스트다.
즉, 실행 컨텍스트는 소스코드를 실행하는데 필요한 환경을 제공하고 코드의 실행 결과를 실제로 관리하는 영역이다.
식별자와 스코프는 실행 컨텍스트의 렉시컬 환경으로 관리하고 코드 실행 순서는 실행 컨텍스트 스택(선입후출)으로 관리한다.
실행 컨텍스트는 소스코드를 실행하는데 필요한 환경을 제공하고 코드의 실행 결과를 실제로 관리하는 영역이다.
.
모든 소스코드는 실행에 앞서 평가과정을 거치는데 이때 실행 컨텍스트에 변수, 함수 등의 선언문,scope, this 등이 저장된다.
이러한 것들이 자바스크립트 코드를 실행하기 위해 필요한 정보이고
실행 컨텍스트는 소스코드를 실행하는데 필요한 환경을 제공하고 코드의 실행결과를 관리하는 영역이다.