JavaScript
JavaScript 프로그래밍 - 실행 컨텍스트(Execution Context) / 실행문맥
여행하는 개발자(SOO)
2022. 2. 10. 17:26
728x90
실행 컨텍스트(Execution Context) / 실행문맥
- 실행할 코드에 제공할 환경 정보들을 모아 놓은 객체 / JS동작원리를 이해하는 중요 개념!!
- 소스코드를 실행하는 데 필요한 환경을 제공하고 코드의 실행 결과를 실제로 관리하는 영역이다.
- scope, hoisting, this, function, closure 등의 동작원리를 담고 있는 자바스크립트의 핵심원리이다.
실행 컨텍스트 종류
- 전역 컨텍스트(Global Context)
- 함수 컨텍스트(Function Context)
- eval 컨텍스트(Eval Context)
실행 컨텍스트 3가지 객체(실행 컨텍스트가 구성되는 요소)
- 변수 객체
- Scope Chain
- this
JS엔진은 소스코드를 2가지 과정으로 처리
- 소스코드 평가 과정
- 소스코드 실행 과정
평가과정
- 실행 컨텍스트 생성, 선언된 변수, 함수 선언문만 먼저 실행
- 생성된 변수, 함수 식별자를 KEY로 실행 컨텍스트가 관리하는 스코프(렉시컬 환경의 환경레코드)에 등록
전역 컨텍스트
- 전역 컨텍스트는 하나의 JS파일에 하나만 존재 할 수 있다. why? JS가 싱글쓰레드이기 때문에.
- 평가 과정
- 선언된 변수, 함수 선언문이 실행되어 , 실행 컨텍스트가 관리하는 전역스코프에 등록된다.
- 또한, 전역객체의 프로퍼티, 메서드가 된다.
- 실행 과정
- 평가가 끝난 후 선언문 이외의 코드들이 실행된다.
- 이때, 전역변수에 값이 할당, 함수들이 호출된다.
- 함수가 호출되면 순차적으로 실행되면 전역코드가 일시 중단 후 함수 내부로 진입한다.
함수 컨텍스트
평가 과정
- 매개변수, 지역변수 선언문이 먼저 실행, 실행 컨텍스트가 관리하는 지역 스코프에 등록된다.
- 또한, 지역변수처럼 사용 가능한 argument객체가 생성, this 바인딩도 결정된다.
실행 과정
- 평가 후 런타임이 시작되면 함수 코드가 순차적으로 실행된다.
- 이때 매개변수, 지역변수에 값이 할당된다.
728x90