인사이드 자바스크립트를 공부하며 정리하는 포스팅입니다.
실행 컨텍스트
ECMAScript에서는 실행 컨텍스트를 "실행 가능한 코드를 형상화하고 구분하는 추상적인 개념"이라고 기술합니다.
이 컨텍스트 안에 실행에 필요한 여러 가지 정보를 담고 있습니다.
실행 컨텍스트가 생성되는 경우는 세 가지가 있습니다.
1) 전역 코드
2) eval() 함수로 실행되는 코드
3) 함수 안의 코드를 실행할 경우
대부분 함수로 실행 컨텍스트를 만듭니다.
ECMAScript에서는 또 실행 컨텍스트 생성을 다음처럼 설명합니다.
"현재 실행되는 컨텍스트에서 이 컨텍스트와 관련 없는 실행 코드가 실행되면, 새로운 컨텍스트가 생성되어 스택에 들어가고 제어권이 그 컨텍스트로 이동한다."
전역 실행 컨텍스트는 일반적인 실행 컨텍스트와 다릅니다. arguments 객체가 없으며 전역 객체 하나만을 포함하는 스코프 체인이 있습니다.
약간 차이점이 있지만 C++에서 콜스택과 비슷한 개념이라고 보시면 쉬울 것 같습니다.
실행 컨텍스트가 생성되면 자바스크립트 엔진을 활성 객체를 생성합니다. 이 객체에 앞으로 사용하게 될 매개변수나 사용자가 정의한 변수 및 객체를 저장하고, 새로 만들어진 컨텍스트로 접근 가능하게 되어 있습니다.
활성 객체
실행 컨텍스트가 생성되면 자바스크립트에서는 해당 컨텍스트에서 실행에 필요한 여러가지 정보를 담을 객체를 생성합니다. 그게 바로 활성 객체입니다. 사용자가 접근할 수 있는 영역은 아니고 자바스크립트 엔진이 사용하는 영역입니다.
활성 객체가 지닌 정보
1) argumens 객체
인자로 들어온 arguments 객체를 arguments 프로퍼티로 접근합니다.
2) 스코프 정보// 스코프 체인 scope 프로퍼티
현재 컨텍스트의 유효 범위를 나타내는 스코프 정보를 생성합니다.
3) 변수
변수나 내부함수는 활성 객체가 생성되는 시점에 생성은 되지만 초기화는 해당 표현식이 실행될 때 이루어집니다.
4) this
'Web Front > Javascript' 카테고리의 다른 글
[InsideJavascript] 9. 클로저 (0) | 2018.04.27 |
---|---|
[InsideJavascript] 8. 스코프 체인 (0) | 2018.04.27 |
[InsideJavascript] 6. 프로토타입 체이닝 (0) | 2018.04.27 |
[InsideJavascript] 5. 함수 호출 패턴과 this 바인딩 (0) | 2018.04.27 |
[InsideJavascript] 4. 함수 (0) | 2018.04.11 |