Skip to content

Commit

Permalink
docs: 23장 스터디23.1~23.2
Browse files Browse the repository at this point in the history
  • Loading branch information
고세종 committed Dec 8, 2023
1 parent 8834d5c commit 605a7ee
Showing 1 changed file with 49 additions and 0 deletions.
49 changes: 49 additions & 0 deletions docs/23_실행 컨텍스트/고세종.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
## 📕 오늘 공부한 내용 . ✒

**오늘 읽은 범위** : 23장

### 23. 실행 컨텍스트

실행 컨텍스트는 자바스크립트의 동작 원리를 담고 있는 핵심 개념이다.<br>
해당 개념을 이해하면 자바스크립트가 스코프를 기반으로 식별자와 식별자에 바인딩된 값을 관리하는 방식과 호이스팅이 발생하는 이유, 클로저의 동작 방식,<br>
태스크 큐와 함께 동작하는 이벤트 핸들러와 비동기 처리의 동작 방식을 이해할 수 있다.

## 소스코드의 타입

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

- 전역 코드 : 전역에 존재하는 소스코드를 말한다. 전역에 정의된 함수, 클래스 등의 내부 코드는 포함하지 않는다.

- 함수 코드 : 함수 내부에 존재하는 소스코드를 말한다. 함수 내부에 중첩된 함수, 클래스 등의 내부 코드는 포함되지 않는다.

- eval 코드 : 빌트인 전역 함수인 eval 함수에 인수로 전달되어 실행되는 소스코드를 말한다.

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

위 4가지 코드들은 각자, **전역, 지역, 독자적인, 모듈** 스코프를 생성하고, 이를 위해 각 코드들이 평가되면 실행 컨텍스트가 생성된다.

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

자바스크립트는 소스코드를 2가지 과정으로 처리한다.<br>
**소스코드의 평가, 소스코드의 실행** 이다.

앞 단원에서 변수의 선언과 할당에서 이 2가지 과정을 맛보기로 살펴 봤다.<br>
변수의 선언과 할당이란 2가지 과정으로 변수가 생성된다는 것이다.

같은 맥락으로 자바스크립트는 평가 과정에서 실행 컨텍스트를 생성하고 변수, 함수 등의 선언문을 실행하여 실행 컨텍스트가 관리하는 스코프에 등록한다.<br>
이어서 런타임, 실행 과정이 진행된다. 실행 과정에서는 코드를 실행하기 위한 정보들을 실행 컨텍스트가 관리하는 스코프에서 검색하여 취득하고,<br>
실행에 결과를 다시 실행 컨텍스트가 관리하는 스코프에 등록한다.

```javascript
var x;
x = 1;
```

위 코드를 예제로 다시한번 살펴보자.

첫째, 자바스크립트는 x를 등록하기 위한 실행 컨텍스트가 관리하는 스코프를 생성한다.<br>
둘째, 생성된 스코프에 x변수를 등록하고 `undefined`로 초기화 한다.<br>
셋째, 평가 과정이 끝나고 실행과정에 돌입하면서 x에 1을 할당하기 위해 실행 컨텍스트가 관리하는 스코프에 접근하여 검색한다.<br>
넷째, x가 스코프에 등록 되어 있다면 값 1을 할당하고 결과를 다시 스코프에 등록한다.

#### +간결한 세 줄 요약

0 comments on commit 605a7ee

Please sign in to comment.