Skip to content

Commit

Permalink
docs: 23.1 ~ 23.2 요약 정리
Browse files Browse the repository at this point in the history
  • Loading branch information
llqqssttyy committed Dec 8, 2023
1 parent 3d54075 commit d2ddaff
Showing 1 changed file with 47 additions and 0 deletions.
47 changes: 47 additions & 0 deletions docs/23_실행 컨텍스트/김다은.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# 23장 실행 컨텍스트

> 실행 컨텍스트란 자바스크립트의 동작 원리를 담고 있는 핵심 개념으로, 식별자, 식별자 바인딩 관리 방식, 호이스팅이 발생하는 이유, 클로저의 동작 방식, 이벤트 핸들러와 비동기 처리의 동작 방식 모두 실행 컨텍스트와 관련있다.
## 1. 소스코드의 타입

ECMAScript 사양은 소스코드를 4가지 타입으로 구분한다.

- 전역 코드

전역 코드가 평가되면 전역 실행 컨텍스트가 생성된다.

- 함수 코드

함수 코드가 평가되면 함수 실행 컨텍스트가 생성된다.

- eval 코드

빌트인 전역 함수인 eval 함수에 인수로 전달되어 실행되는 소스코드.

- 모듈 코드

모듈 내부에 존재하는 소스코드. 모듈 내부의 함수, 클래스 등의 내부 코드는 포함되지 않는다.

| 타입 | 설명 | 관리 내용 | 코드 평가 결과 |
| --------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ------------------ |
| 전역 코드 | 전역에 존재하는 소스코드. 전역에 정의된 함수, 클래스 등의 내부 코드는 포함되지 않는다. | 전역 스코프(최상위 스코프) 생성, 전역 변수와 전역 함수를 전역 객체의 프로퍼티와 메서드로 바인딩, 전역 객체와 연결 | 전역 실행 컨텍스트 |
| 함수 코드 | 함수 내부에 존재하는 소스코드. 중첩 함수와 클래스 등의 내부 코드는 포함되지 않는다. | 지역 스코프 생성, 지역 변수, 매개변수, arguments 객체 관리, 지역 스코프를 전역 스코프와 스코프 체인으로 연결 | 함수 실행 컨텍스트 |
| eval 코드 | 빌트인 전역 함수인 eval 함수에 인수로 전달되어 실행되는 소스코드 | strict mode에서 독자적인 스코프를 생성 | eval 실행 컨텍스트 |
| 모듈 코드 | 모듈 내부에 존재하는 소스코드. 모듈 내부의 함수, 클래스 등의 내부 코드는 포함되지 않는다. | 모듈별로 독립적인 모듈 스코프를 생성 | 모듈 실행 컨텍스트 |

<br/>

## 2. 소스코드의 평가와 실행

**모든 소스코드는 자바스크립트 엔진에 의해 "소스코드의 평가"와 "소스코드의 실행" 과정으로 나누어 처리된다**.

### 소스코드 평가

- 실행 컨텍스트 생성
- 변수, 함수 등의 선언문만 먼저 실행하여 생성된 식별자 키로 실행 컨텍스트가 관리하는 스코프에 등록

### 소스코드 실행

- 평가 과정이 끝나면 순차적으로 실행(런타임)
- 소스코드 실행에 필요한 변수나 함수의 참조 정보는 실행 컨텍스트가 관리하는 스코프에서 검색하여 취득
- 소스코드의 실행 결과(변수 값 변경 등)는 다시 실행 컨텍스트가 관리하는 스코프에 등록

0 comments on commit d2ddaff

Please sign in to comment.