728x90
728x90
실행 컨텍스트(Execution Context)는
자바스크립트 코드가 실행되기 위해서 필요한 환경을 제공하는 추상적인 개념이다.
실행 컨텍스트는 아래의 세 가지 구성 요소로 이루어진다.
- 변수 객체(Variable Object): 현재 컨텍스트 내에서 사용되는 지역 변수, 매개 변수, 함수 선언 등의 정보를 담고 있는 객체이다.
- 스코프 체인(Scope Chain): 변수 객체의 리스트로, 현재 컨텍스트의 변수 객체와 상위 컨텍스트의 변수 객체들을 차례대로 저장하고 있다.
- this 바인딩(this Binding): this 키워드가 참조하는 객체를 의미한다.
실행 컨텍스트는 함수가 호출될 때마다 생성되며, 생성 과정은 아래와 같다.
- 활성 객체(Activation Object) 생성
- Arguments 객체 생성
- 스코프 정보 생성
- 변수 정보 생성
- this 바인딩 생성
실행 컨텍스트는 전역 컨텍스트와 함수 컨텍스트로 나뉜다.
전역 컨텍스트는 코드가 실행되기 전에 생성되며, 전역 객체와 전역 변수를 포함하고 있다. 함수 컨텍스트는 함수가 호출될 때마다 생성되며, 해당 함수의 지역 변수와 매개 변수를 포함하고 있다.
실행 컨텍스트는 자바스크립트의 동작 원리를 이해하는 데 매우 중요한 개념이다.
다음은 실행 컨텍스트를 이해하기 위한 예시 코드이다.
var x = 10;
function foo() {
var y = 20;
function bar() {
var z = 30;
console.log(x + y + z);
}
bar();
}
foo(); // 60 출력
위 코드에서 foo() 함수가 호출되면, foo() 함수의 실행 컨텍스트가 생성된다. foo() 함수의 실행 컨텍스트에는 아래와 같은 정보가 포함된다.
- 변수 객체: y 변수의 정보를 담고 있는 객체
- 스코프 체인: foo() 함수의 변수 객체와 전역 컨텍스트의 변수 객체를 차례대로 저장한 리스트
- this 바인딩: 전역 객체를 참조하는 this
bar() 함수가 호출되면, bar() 함수의 실행 컨텍스트가 생성된다. bar() 함수의 실행 컨텍스트에는 아래와 같은 정보가 포함된다.
- 변수 객체: z 변수의 정보를 담고 있는 객체
- 스코프 체인: bar() 함수의 변수 객체와 foo() 함수의 변수 객체와 전역 컨텍스트의 변수 객체를 차례대로 저장한 리스트
- this 바인딩: 전역 객체를 참조하는 this
console.log(x + y + z); 코드에서 x, y, z 변수는 스코프 체인을 통해 각각 전역 컨텍스트, foo() 함수의 변수 객체, bar() 함수의 변수 객체에서 검색된다. 따라서 60이 출력된다.
728x90
300x250
'2023 공부한것들' 카테고리의 다른 글
[4-2] 식별자 (0) | 2023.06.28 |
---|---|
[4-1] 변수란 무엇인가? 왜 필요한가? (0) | 2023.06.28 |
[Node.js] 변수 선언 (0) | 2023.06.28 |
[Node.js] null과 undefined: 뭔지, 뭔 차이인지? (0) | 2023.06.28 |
[3-4] 비주얼 스튜디오 코드 (0) | 2023.06.28 |