-
Notifications
You must be signed in to change notification settings - Fork 42
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
고세종
committed
Dec 8, 2023
1 parent
8834d5c
commit 605a7ee
Showing
1 changed file
with
49 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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을 할당하고 결과를 다시 스코프에 등록한다. | ||
|
||
#### +간결한 세 줄 요약 |