Skip to content

Commit

Permalink
Update 건우.md
Browse files Browse the repository at this point in the history
  • Loading branch information
Gun woo authored Jul 18, 2023
1 parent 82f5473 commit 95b24b2
Showing 1 changed file with 12 additions and 3 deletions.
15 changes: 12 additions & 3 deletions [23장] 실행 컨텍스트/건우.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# 실행 컨텍스트를 알아야 하는 이유
1. JS가 식별자와 식별자에 바인딩 된 값을 관리하는 방식을 알기 위함
2. 호이스팅이 왜 발생하는지 알기 위해서
3. 클로저의 동작 방식을 알기 위해서
4. 이벤트 핸들러와 비동기 처리의 동작 방식을 알기 위해서
2. **호이스팅** 왜 발생하는지 알기 위해서
3. **클로저** 동작 방식을 알기 위해서
4. **이벤트 핸들러****비동기 처리** 동작 방식을 알기 위해서

# 소스코드 평가와 실행
+ JS에서는 소스코드를 평가과정과 실행과정으로 나누어서 실행합니다.
Expand Down Expand Up @@ -53,6 +53,8 @@ foo();
![image](https://github.com/prgrms-web-devcourse/FEDC4-deep-dive-study/assets/55936770/9b631714-150c-419a-914e-b628564e6342)<br>
+ 실행 컨텍스트 스택은 코드 실행 순서를 관리합니다.
+ 스택의 최상위에 있는 실행 컨텍스트는 언제나 현재 실행 중인 실행 컨텍스트입니다.
+ 평가과정이 끝나고 실행 컨텍스트가 생성되면 스택에 푸쉬합니다.
+ 실행과정이 끝나면 스택에서 해당 실행 컨텍스트를 팝 합니다.

# 렉시컬 환경
+ 책의 방식과 같이 LexicalEnvironment 와 VariableEnvironment 를 구분하지 않고 렉시컬 환경으로 통일해서 설명하겠습니다.
Expand Down Expand Up @@ -188,3 +190,10 @@ console.log(a); // 10
console.log(b); // 참조 에러
```
+ 블록안에 있는 var 키워드의 변수는 블록 렉시컬 환경에 포함되지 않음을 알 수 있습니다.

# 정리
1. 실행 컨텍스트는 실행하는데에 필요한 환경을 제공하고 코드의 실행 결과를 관리한다.
2. 스코프와 코드 실행 순서 관리를 구현한 내부 메커니즘이다.
3. 식별자, 스코프는 렉시컬 환경으로 관리한다.
4. 실행 순서는 실행 컨텍스트 스택으로 관리한다.
5. 렉시컬 환경은 환경 레코드와 외부 렉시컬 환경에 대한 참조로 구성되며 환경 레코드는 식별자를, 외부 렉시컬 환경 참조는 상위 스코프를 관리한다.

0 comments on commit 95b24b2

Please sign in to comment.