Skip to content

Commit bb0a67f

Browse files
authored
Merge pull request #42 from InSeong-So/main
✏️ 6회차 λ¬Έμ„œ μΆ”κ°€ : μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ
2 parents 5d77212 + 7e0c686 commit bb0a67f

File tree

2 files changed

+185
-11
lines changed

2 files changed

+185
-11
lines changed
Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ λ™μž‘ 원리λ₯Ό 담은 핡심 κ°œλ…μœΌλ‘œ, 이λ₯Ό λ°”λ₯΄κ²Œ μ΄ν•΄ν•˜λ©΄ μ•žμ„œ 배운 μžλ°”μŠ€ν¬λ¦½νŠΈ λ™μž‘κ³Ό μ•žμœΌλ‘œ 배울 λ‚΄μš©μ„ λͺ…ν™•νžˆ μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€.
2+
3+
## μ†ŒμŠ€μ½”λ“œμ˜ νƒ€μž…
4+
> ECMAScriptκ°€ μ •μ˜ν•œ 4κ°€μ§€ μ†ŒμŠ€μ½”λ“œ νƒ€μž…μž…λ‹ˆλ‹€. 이듀 μ½”λ“œλŠ” **μ‹€ν–‰ μ»¨ν…μŠ€νŠΈλ₯Ό 생성**ν•©λ‹ˆλ‹€.
5+
6+
μ΄λ ‡κ²Œ κ΅¬λΆ„ν•˜λŠ” μ΄μœ λŠ” μ†ŒμŠ€μ½”λ“œμ˜ νƒ€μž…μ— 따라 μ‹€ν–‰ μ»¨ν…μŠ€νŠΈλ₯Ό μƒμ„±ν•˜λŠ” κ³Όμ •κ³Ό 관리 λ‚΄μš©μ΄ λ‹€λ₯΄κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.
7+
1. μ „μ—­ μ½”λ“œ(전역에 μ‘΄μž¬ν•˜λŠ” μ½”λ“œ)
8+
- μ „μ—­ λ³€μˆ˜λ₯Ό κ΄€λ¦¬ν•˜κΈ° μœ„ν•œ μ΅œμƒμœ„ μŠ€μ½”ν”„μΈ μ „μ—­ μŠ€μ½”ν”„λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
9+
- μ „μ—­ μ½”λ“œκ°€ ν‰κ°€λ˜λ©΄ μ „μ—­ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈκ°€ μƒμ„±λ©λ‹ˆλ‹€.
10+
2. ν•¨μˆ˜ μ½”λ“œ(ν•¨μˆ˜ 내뢀에 μ‘΄μž¬ν•˜λŠ” μ½”λ“œ)
11+
- μ§€μ—­ μŠ€μ½”ν”„λ₯Ό μƒμ„±ν•˜κ³  μ§€μ—­ λ³€μˆ˜, λ§€κ°œλ³€μˆ˜, arguments 객체λ₯Ό κ΄€λ¦¬ν•©λ‹ˆλ‹€.
12+
- ν•¨μˆ˜ μ½”λ“œκ°€ ν‰κ°€λ˜λ©΄ ν•¨μˆ˜ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈκ°€ μƒμ„±λ©λ‹ˆλ‹€.
13+
3. ~~eval μ½”λ“œ~~(μ‚¬μš©μ„ ꢌμž₯ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€)
14+
- strict modeμ—μ„œ μžμ‹ λ§Œμ˜ λ…μžμ μΈ μŠ€μ½”ν”„λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
15+
- eval μ½”λ“œκ°€ ν‰κ°€λ˜λ©΄ eval μ‹€ν–‰ μ»¨ν…μŠ€νŠΈκ°€ μƒμ„±λ©λ‹ˆλ‹€.
16+
4. λͺ¨λ“ˆ μ½”λ“œ
17+
- λͺ¨λ“ˆλ³„λ‘œ 독립적인 λͺ¨λ“ˆ μŠ€μ½”ν”„λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
18+
- λͺ¨λ“ˆ μ½”λ“œκ°€ ν‰κ°€λ˜λ©΄ λͺ¨λ“ˆ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈκ°€ μƒμ„±λ©λ‹ˆλ‹€.
19+
20+
μ΄λ ‡κ²Œ 놓고 보면, 저희가 선택할 수 μžˆλŠ” νƒ€μž…μ€ λŒ€λΆ€λΆ„ 두 κ°€μ§€κ°€ λ©λ‹ˆλ‹€. λ°”λ‘œ μ „μ—­ μ½”λ“œμ™€ ν•¨μˆ˜ μ½”λ“œμ£ . μ΄κ²ƒμœΌλ‘œ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈμ— λŒ€ν•΄ μ•Œμ•„ λ³Ό κ±°μ—μš”.
21+
22+
<br>
23+
24+
## μ†ŒμŠ€μ½”λ“œ 평가와 μ‹€ν–‰
25+
> μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진은 **μ†ŒμŠ€μ½”λ“œ 평가**와 **μ†ŒμŠ€μ½”λ“œ μ‹€ν–‰** κ³Όμ •μœΌλ‘œ λ‚˜λˆ„μ–΄ μ²˜λ¦¬ν•©λ‹ˆλ‹€.
26+
27+
μ†ŒμŠ€μ½”λ“œ 평가 과정은 μ΄λ ‡μŠ΅λ‹ˆλ‹€.
28+
1. μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ 생성
29+
2. λ³€μˆ˜, ν•¨μˆ˜ λ“±μ˜ μ„ μ–Έλ¬Έλ§Œ λ¨Όμ € μ‹€ν–‰
30+
3. μƒμ„±λœ λ³€μˆ˜λ‚˜ ν•¨μˆ˜ μ‹λ³„μžλ₯Ό ν‚€λ‘œ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈκ°€ κ΄€λ¦¬ν•˜λŠ” μŠ€μ½”ν”„μ— 등둝
31+
- μ—¬κΈ°μ„œμ˜ μŠ€μ½”ν”„λŠ” λ ‰μ‹œμ»¬ ν™˜κ²½μ˜ ν™˜ κ²½ λ ˆμ½”λ“œλΌκ³  ν•©λ‹ˆλ‹€.
32+
33+
μ†ŒμŠ€μ½”λ“œ 평가 과정이 μ’…λ£Œλ˜λ©΄ μ†ŒμŠ€μ½”λ“œκ°€ μ‹€ν–‰λ˜λŠ”, `λŸ°νƒ€μž„`이 μ‹œμž‘λ©λ‹ˆλ‹€.
34+
1. 선언문을 μ œμ™Έν•œ μ†ŒμŠ€μ½”λ“œκ°€ 순차적으둜 μ‹€ν–‰λ©λ‹ˆλ‹€.
35+
2. μ†ŒμŠ€μ½”λ“œ 싀행에 ν•„μš”ν•œ 정보인 `λ³€μˆ˜`λ‚˜ `ν•¨μˆ˜`의 μ°Έμ‘°λ₯Ό μ‹€ν–‰ μ»¨ν…μŠ€νŠΈκ°€ κ΄€λ¦¬ν•˜λŠ” μŠ€μ½”ν”„μ—μ„œ κ²€μƒ‰ν•©λ‹ˆλ‹€.
36+
- λ³€μˆ˜ κ°’μ˜ λ³€κ²½ λ“± μ†ŒμŠ€μ½”λ“œμ˜ μ‹€ν–‰ κ²°κ³ΌλŠ” λ‹€μ‹œ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈκ°€ κ΄€λ¦¬ν•˜λŠ” μŠ€μ½”ν”„μ— λ“±λ‘ν•©λ‹ˆλ‹€.
37+
38+
<br>
39+
40+
## μ‹€ν–‰ μ»¨ν…μŠ€νŠΈμ˜ μ—­ν• 
41+
> μ „μ—­ μ½”λ“œμ™€ ν•¨μˆ˜ μ½”λ“œλ‘œ 예제λ₯Ό μ‚΄νŽ΄λ΄…μ‹œλ‹€.
42+
43+
μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진은 μ „μ—­ μ½”λ“œ 평가 - μ‹€ν–‰, ν•¨μˆ˜ μ½”λ“œ 평가 - 싀행을 순차적으둜 μ§„ν–‰ν•©λ‹ˆλ‹€.
44+
1. μ „μ—­ μ½”λ“œ 평가
45+
- 전역에 μ‘΄μž¬ν•˜λŠ” λ³€μˆ˜μ™€ ν•¨μˆ˜ 선언문을 λ¨Όμ € μ‹€ν–‰ν•˜μ—¬ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈμ˜ **μ „μ—­ μŠ€μ½”ν”„**에 λ“±λ‘λ©λ‹ˆλ‹€.
46+
- var ν‚€μ›Œλ“œλ‘œ μ„ μ–Έν•œ λ³€μˆ˜μ™€ ν•¨μˆ˜ μ„ μ–Έλ¬Έμ˜ 경우 μ „μ—­ 객체의 ν”„λ‘œνΌν‹°κ°€ λ©λ‹ˆλ‹€.
47+
- let, const ν‚€μ›Œλ“œλ‘œ μ„ μ–Έν•œ λ³€μˆ˜λŠ” 보이지 μ•ŠλŠ” κ°œλ…μ  블둝에 μ‘΄μž¬ν•©λ‹ˆλ‹€.
48+
49+
2. μ „μ—­ μ½”λ“œ μ‹€ν–‰
50+
- λŸ°νƒ€μž„μ΄ μ‹œμž‘λ©λ‹ˆλ‹€. μ „μ—­ λ³€μˆ˜μ— 값이 ν• λ‹Ήλ˜κ³  ν•¨μˆ˜κ°€ ν˜ΈμΆœλ©λ‹ˆλ‹€.
51+
- ν•¨μˆ˜κ°€ 호좜되면 μ „μ—­ μ½”λ“œ 싀행이 μΌμ‹œ μ€‘λ‹¨λ˜κ³  ν•¨μˆ˜ λ‚΄λΆ€λ‘œ μ§„μž…ν•˜μ—¬ μ½”λ“œλ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€.
52+
53+
3. ν•¨μˆ˜ μ½”λ“œ 평가
54+
- ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜μ™€ μ§€μ—­ λ³€μˆ˜ 선언문을 λ¨Όμ € μ‹€ν–‰ν•˜κ³  μ‹€ν–‰ μ»¨ν…μŠ€νŠΈμ˜ **μ§€μ—­ μŠ€μ½”ν”„**에 λ“±λ‘λ©λ‹ˆλ‹€.
55+
- ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ μ§€μ—­ λ³€μˆ˜μ²˜λŸΌ μ‚¬μš© κ°€λŠ₯ν•œ **arguments 객체가 μƒμ„±λ˜μ–΄ μ§€μ—­ μŠ€μ½”ν”„μ— 등둝**되고 **this 바인딩도 κ²°μ •**λ©λ‹ˆλ‹€.
56+
57+
4. ν•¨μˆ˜ μ½”λ“œ μ‹€ν–‰
58+
- λŸ°νƒ€μž„μ΄λ―€λ‘œ λ§€κ°œλ³€μˆ˜μ™€ μ§€μ—­ λ³€μˆ˜μ— 값이 ν• λ‹Ήλ©λ‹ˆλ‹€.
59+
- ν•¨μˆ˜ 호좜 μ½”λ“œκ°€ μ‘΄μž¬ν•œλ‹€λ©΄ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•œ μ‹λ³„μžλ₯Ό μŠ€μ½”ν”„ 체인을 톡해 κ²€μƒ‰ν•©λ‹ˆλ‹€.
60+
- μ „μ—­ μŠ€μ½”ν”„κΉŒμ§€ νƒμƒ‰ν•˜λ‚˜ μ „μ—­ μŠ€μ½”ν”„μ— ν•΄λ‹Ή ν•¨μˆ˜κ°€ μ‘΄μž¬ν•˜μ§€ μ•Šλ‹€λ©΄ μ „μ—­ 객체의 ν”„λ‘œνΌν‹°λ₯Ό μ „μ—­ μŠ€μ½”ν”„μ²˜λŸΌ κ²€μƒ‰ν•©λ‹ˆλ‹€.
61+
- ν˜ΈμΆœν•œ ν•¨μˆ˜ λ©”μ„œλ“œλ₯Ό μ‹λ³„μž 객체의 ν”„λ‘œν† νƒ€μž… 체인을 톡해 κ²€μƒ‰ν•©λ‹ˆλ‹€.
62+
- μΈμˆ˜κ°€ μ‘΄μž¬ν•œλ‹€λ©΄ 인수λ₯Ό μ „λ‹¬ν•œ ν‘œν˜„μ‹μ„ ν‰κ°€ν•˜κ³ , 각 μ‹λ³„μžλ₯Ό μŠ€μ½”ν”„ 체인을 톡해 κ²€μƒ‰ν•©λ‹ˆλ‹€.
63+
- ν•¨μˆ˜ 싀행이 μ’…λ£Œλ˜λ©΄ ν•¨μˆ˜ 호좜 μ΄μ „μœΌλ‘œ λŒμ•„κ°€ μ „μ—­ μ½”λ“œ 싀행을 κ³„μ†ν•©λ‹ˆλ‹€.
64+
65+
이처럼 μ½”λ“œκ°€ μ‹€ν–‰λ˜λ €λ©΄ μŠ€μ½”ν”„λ₯Ό ꡬ뢄해 μ‹λ³„μžμ™€ λ°”μΈλ”©λœ 값이 κ΄€λ¦¬λ˜μ–΄μ•Ό ν•˜λ©°, 쀑첩 관계에 μ˜ν•΄ μŠ€μ½”ν”„ 체인을 ν˜•μ„±ν•˜κ³  μ‹λ³„μžλ₯Ό 검색할 수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€. λ˜ν•œ μ „μ—­ 객체의 ν”„λ‘œνΌν‹°λ„ μ „μ—­ λ³€μˆ˜μ²˜λŸΌ 검색할 수 μžˆμ–΄μ•Ό ν•˜μ£ .
66+
67+
ν•¨μˆ˜ 호좜이 μ’…λ£Œλ˜λ©΄ ν•¨μˆ˜ 호좜 μ΄μ „μœΌλ‘œ λŒμ•„κ°€λ―€λ‘œ `ν˜„μž¬ μ‹€ν–‰ 쀑인 μ½”λ“œ`와 `이전에 μ‹€ν–‰ν•˜λ˜ μ½”λ“œ`λ₯Ό κ΅¬λΆ„ν•˜μ—¬ 관리해야 ν•©λ‹ˆλ‹€. 즉 μ•„λž˜μ™€ 같은 쑰건이 생기죠.
68+
1. 선언에 μ˜ν•΄ μƒμ„±λœ `λͺ¨λ“  μ‹λ³„μž(λ³€μˆ˜, ν•¨μˆ˜, 클래슀 λ“±)`λ₯Ό μŠ€μ½”ν”„λ₯Ό κ΅¬λΆ„ν•˜μ—¬ λ“±λ‘ν•˜κ³  `μƒνƒœ λ³€ν™”(μ‹λ³„μžμ— 바인딩 된 κ°’μ˜ λ³€ν™”)λ₯Ό μ§€μ†μ μœΌλ‘œ 관리`ν•  수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.
69+
2. μŠ€μ½”ν”„λŠ” 쀑첩 관계에 μ˜ν•΄ `μŠ€μ½”ν”„ 체인을 ν˜•μ„±`ν•΄μ•Ό ν•˜λ©°, μŠ€μ½”ν”„ 체인을 톡해 μƒμœ„ μŠ€μ½”ν”„λ‘œ μ΄λ™ν•˜λ©° μ‹λ³„μžλ₯Ό 검색할 수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.
70+
3. ν˜„μž¬ μ‹€ν–‰ 쀑인 μ½”λ“œμ˜ μ‹€ν–‰ μˆœμ„œλ₯Ό `λ³€κ²½(ν•¨μˆ˜ ν˜ΈμΆœμ— μ˜ν•œ μ‹€ν–‰ μˆœμ„œ λ³€κ²½ λ“±)`ν•  수 μžˆμ–΄μ•Ό ν•˜λ©°, `λ˜λŒμ•„` 갈 μˆ˜λ„ μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.
71+
72+
이 λͺ¨λ“  것을 κ΄€λ¦¬ν•˜λŠ” 게 μ‹€ν–‰ μ»¨ν…μŠ€νŠΈλ‘œ μ†ŒμŠ€μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜λŠ”λ° ν•„μš”ν•œ ν™˜κ²½μ„ μ œκ³΅ν•˜κ³  μ½”λ“œμ˜ μ‹€ν–‰ κ²°κ³Όλ₯Ό μ‹€μ œλ‘œ κ΄€λ¦¬ν•˜λŠ” μ˜μ—­μž…λ‹ˆλ‹€. 즉, **μ‹λ³„μž(λ³€μˆ˜, ν•¨μˆ˜, 클래슀 λ“±)λ₯Ό λ“±λ‘ν•˜κ³  κ΄€λ¦¬ν•˜λŠ” μŠ€μ½”ν”„μ™€ μ½”λ“œ μ‹€ν–‰ μˆœμ„œ 관리λ₯Ό κ΅¬ν˜„ν•œ λ‚΄λΆ€ λ©”μ»€λ‹ˆμ¦˜μ΄λ©°, λͺ¨λ“  μ½”λ“œλŠ” μ‹€ν–‰ μ»¨ν…μŠ€νŠΈλ₯Ό 톡해 μ‹€ν–‰λ©λ‹ˆλ‹€**. μ‹λ³„μžμ™€ μŠ€μ½”ν”„λŠ” μ‹€ν–‰ μ»¨ν…μŠ€νŠΈμ˜ **λ ‰μ‹œμ»¬ ν™˜κ²½(Lexical Enviroment)** 으둜 κ΄€λ¦¬ν•˜κ³ , μ½”λ“œ μ‹€ν–‰ μˆœμ„œλŠ” **μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ μŠ€νƒ**으둜 κ΄€λ¦¬ν•©λ‹ˆλ‹€.
73+
74+
μ•„λž˜ μ½”λ“œλ‘œ μ‹€ν–‰ μ»¨νƒμŠ€νŠΈ μŠ€νƒμ— λŒ€ν•΄ μžμ„Ένžˆ μ•Œμ•„λ΄…μ‹œλ‹€.
75+
76+
<br>
77+
78+
## μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ μŠ€νƒ
79+
> μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진은 μ‹€ν–‰ μ»¨ν…μŠ€νŠΈλ₯Ό **μŠ€νƒ(Stack) 자료ꡬ쑰**둜 κ΄€λ¦¬ν•˜λ©°, 이λ₯Ό μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ μŠ€νƒμ΄λΌκ³  ν•©λ‹ˆλ‹€.
80+
81+
μ½”λ“œμ™€ ν•¨κ»˜ μ‹œμž‘ν•©λ‹ˆλ‹€.
82+
83+
```js
84+
// 1. μ „μ—­ μ½”λ“œ : μ „μ—­ λ³€μˆ˜ μ„ μ–Έ
85+
const x = 1;
86+
const y = 2;
87+
88+
// μ „μ—­ μ½”λ“œ : ν•¨μˆ˜ μ •μ˜
89+
function out(){
90+
// 2. ν•¨μˆ˜ μ½”λ“œ : μ§€μ—­ λ³€μˆ˜ μ„ μ–Έ
91+
const x = 10;
92+
93+
function in(){
94+
const y = 20;
95+
console.log(x + y);
96+
}
97+
in();
98+
}
99+
100+
out();
101+
```
102+
103+
μœ„ μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜λ©΄ 순차적으둜 μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ μŠ€νƒκ°€ μΆ”κ°€(push)λ˜κ±°λ‚˜ 제거(pop)λ©λ‹ˆλ‹€. λ„μ‹ν™”ν•˜λ©΄ μ•„λž˜μ™€ κ°™μ•„μš”.
104+
105+
<br>
106+
107+
<div align='center'>
108+
109+
<img src='./img/execution_context/execution_context_stack.jpg' width='600'/>
110+
111+
<br>
112+
113+
<div align="left">
114+
<ul style="list-style:none;">
115+
<li>
116+
1. μ „μ—­ λ³€μˆ˜ x와 y, ν•¨μˆ˜ out은 μ „μ—­ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈμ— 등둝(push)되고, λŸ°νƒ€μž„μ΄ μ‹œμž‘λ˜λ©΄ μ „μ—­ λ³€μˆ˜μ— 값이 ν• λ‹Ήλ˜κ³  out이 ν˜ΈμΆœλ©λ‹ˆλ‹€.
117+
</li>
118+
<br>
119+
<li>
120+
2. ν•¨μˆ˜ out이 ν˜ΈμΆœλ˜μ–΄ μ½”λ“œ μ œμ–΄κΆŒ(Control)이 out ν•¨μˆ˜ λ‚΄λΆ€λ‘œ μ΄λ™ν•œ λ’€ out ν•¨μˆ˜ λ‚΄λΆ€μ˜ ν•¨μˆ˜ μ½”λ“œλ₯Ό ν‰κ°€ν•˜μ—¬ out ν•¨μˆ˜ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈλ₯Ό μƒμ„±ν•˜κ³  μŠ€νƒμ— μΆ”κ°€(push)ν•©λ‹ˆλ‹€. 이 λ•Œ μ§€μ—­ λ³€μˆ˜ x와 λ‚΄λΆ€ ν•¨μˆ˜ in이 out ν•¨μˆ˜ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈμ— λ“±λ‘λ˜κ³ , λŸ°νƒ€μž„μ΄λ―€λ‘œ μ§€μ—­ λ³€μˆ˜μ— 값이 ν• λ‹Ήλ˜κ³  λ‚΄λΆ€ ν•¨μˆ˜ in이 ν˜ΈμΆœλ©λ‹ˆλ‹€.
121+
</li>
122+
<br>
123+
<li>
124+
3. ν•¨μˆ˜ in이 ν˜ΈμΆœλ˜μ–΄ μ½”λ“œ μ œμ–΄κΆŒμ΄ in ν•¨μˆ˜ λ‚΄λΆ€λ‘œ μ΄λ™ν•œ λ’€, in ν•¨μˆ˜ λ‚΄λΆ€μ˜ ν•¨μˆ˜ μ½”λ“œλ₯Ό ν‰κ°€ν•˜μ—¬ in ν•¨μˆ˜ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈλ₯Ό μƒμ„±ν•˜κ³  μŠ€νƒμ— μΆ”κ°€(push)ν•©λ‹ˆλ‹€. 이 λ•Œ μ§€μ—­ λ³€μˆ˜ yκ°€ in ν•¨μˆ˜ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈμ— λ“±λ‘λ˜κ³ , λŸ°νƒ€μž„μ΄λ―€λ‘œ y에 값을 ν• λ‹Ήν•œ λ’€ console.log λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•˜κ³  μ’…λ£Œλ©λ‹ˆλ‹€.
125+
</li>
126+
<br>
127+
<li>
128+
1. in ν•¨μˆ˜κ°€ μ’…λ£Œλ˜μ—ˆμœΌλ―€λ‘œ μ½”λ“œ μ œμ–΄κΆŒμ΄ λ‹€μ‹œ out ν•¨μˆ˜λ‘œ μ΄λ™ν•©λ‹ˆλ‹€. in ν•¨μˆ˜κ°€ μ’…λ£Œλ˜μ—ˆμœΌλ―€λ‘œ μŠ€νƒμ—μ„œ 제거(pop)λ©λ‹ˆλ‹€. 그리고 in ν•¨μˆ˜λŠ” 더 이상 μ‹€ν–‰ν•  μ½”λ“œκ°€ μ—†μœΌλ―€λ‘œ μ’…λ£Œλ©λ‹ˆλ‹€.
129+
</li>
130+
<br>
131+
<li>
132+
1. foo ν•¨μˆ˜κ°€ μ’…λ£Œλ˜μ—ˆμœΌλ―€λ‘œ μ½”λ“œ μ œμ–΄κΆŒμ€ λ‹€μ‹œ μ „μ—­ μ½”λ“œλ‘œ μ΄λ™ν•©λ‹ˆλ‹€. out ν•¨μˆ˜κ°€ μ’…λ£Œλ˜μ—ˆμœΌλ―€λ‘œ μŠ€νƒμ—μ„œ 제거(pop)λ©λ‹ˆλ‹€. 그리고 μ „μ—­ μ½”λ“œλŠ” 더 이상 μ‹€ν–‰ν•  μ½”λ“œκ°€ μ—†μœΌλ―€λ‘œ μ’…λ£Œλ˜λ©° μ‹€ν–‰ μ»¨ν…μŠ€νŠΈμ—μ„œ 제거(pop)λ©λ‹ˆλ‹€.
133+
</li>
134+
</ul>
135+
</div>
136+
137+
</div>
138+
139+
<br>
140+
141+
이처럼 μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ μŠ€νƒμ€ μ½”λ“œμ˜ μ‹€ν–‰ μˆœμ„œλ₯Ό κ΄€λ¦¬ν•˜μ£ . μ†ŒμŠ€μ½”λ“œκ°€ ν‰κ°€λ˜λ©΄ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈκ°€ μƒμ„±λ˜κ³  μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ μŠ€νƒμ˜ μ΅œμƒμœ„μ— μŒ“μž…λ‹ˆλ‹€. 즉, **μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ μŠ€νƒμ˜ μ΅œμƒμœ„μ— μ‘΄μž¬ν•˜λŠ” μ‹€ν–‰ μ»¨ν…μŠ€νŠΈλŠ” μ–Έμ œλ‚˜ ν˜„μž¬ μ‹€ν–‰ 쀑인 μ½”λ“œμ˜ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ**μž…λ‹ˆλ‹€. 이λ₯Ό μ‹€ν–‰ 쀑인 `μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ(Running Execution Context)`라고 ν•©λ‹ˆλ‹€.
142+
143+
<br>
144+
145+
## λ ‰μ‹œμ»¬ ν™˜κ²½(Lexical Enviroment)
146+
> μ‹λ³„μžμ™€ μ‹λ³„μžμ— 바인딩 된 κ°’, μƒμœ„ μŠ€μ½”ν”„μ— λŒ€ν•œ μ°Έμ‘°λ₯Ό κΈ°λ‘ν•˜λŠ” 자료ꡬ쑰둜 μ‹€ν–‰ μ»¨ν…μŠ€νŠΈλ₯Ό κ΅¬μ„±ν•˜λŠ” μ»΄ν¬λ„ŒνŠΈμž…λ‹ˆλ‹€.
147+
148+
`μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ μŠ€νƒ`이 **μ½”λ“œμ˜ μ‹€ν–‰ μˆœμ„œλ₯Ό 관리**ν•œλ‹€λ©΄ `λ ‰μ‹œμ»¬ ν™˜κ²½`은 **μŠ€μ½”ν”„μ™€ μ‹λ³„μžλ₯Ό 관리**ν•©λ‹ˆλ‹€.

β€ŽREADME.mdβ€Ž

Lines changed: 37 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,13 @@
22
> μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό A to Z ν•΄μ„ν•˜κ³  λ°°μ›Œμ„œ λΏŒμ…”λ΄…μ‹œλ‹€!:mag_right: 덀으둜 CS지식도 λ„“ν˜€λ³ΌκΉŒμš”? :wink:
33
44
⛔️ 이 μŠ€ν„°λ””λŠ” λ°œν‘œ μ€‘μ‹¬ν˜•μž…λ‹ˆλ‹€.
5-
1. νšŒμ°¨λ³„λ‘œ μͺ½μ§€μ‹œν—˜μ„ μΉ©λ‹ˆλ‹€. [리더](https://github.com/InSeong-So)κ°€ μ€€λΉ„ν•˜κ³ , Google Form을 μ΄μš©ν•˜μ—¬ μ„±μž₯ 곑선을 κ΄€λ¦¬ν•©λ‹ˆλ‹€.
5+
1. νšŒμ°¨λ³„λ‘œ μͺ½μ§€μ‹œν—˜μ„ μΉ©λ‹ˆλ‹€. [리더 InSeong-So](https://github.com/InSeong-So)κ°€ μ€€λΉ„ν•˜κ³ , Google Form을 μ΄μš©ν•˜μ—¬ μ„±μž₯ 곑선을 κ΄€λ¦¬ν•©λ‹ˆλ‹€.
66
2. κ³΅λΆ€ν•œ νšŒμ°¨μ— λŒ€ν•΄μ„œ ν•œ λͺ…도 μ˜ˆμ™Έ 없이 Blogλ‚˜ Github, Notion 등에 μ •λ¦¬ν•˜κ³  λ§€μ£Ό νŒ€μ› 리뷰와 ν”Όλ“œλ°±μ„ 톡해 μ„±μž₯ν•©λ‹ˆλ‹€. λͺ¨λ“  과정이 λ‹Ήμ‹ μ˜ λ…Έλ ₯의 증거가 λ©λ‹ˆλ‹€!
77
3. μ˜€ν”„λΌμΈμ—μ„œμ˜ λ°œν‘œμ™€ μ²­μ·¨λ₯Ό 톡해 μœ μ—°ν•œ 사고와 리더쉽을 κ²ΈλΉ„ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이해가 μ•ˆ λ˜λŠ” λΆ€λΆ„, 잘λͺ» μ„€λͺ…ν•˜κ±°λ‚˜ μ •λ¦¬λœ 뢀뢄을 μ„œλ‘œ μ˜λ…Όν•˜μ—¬ ν•œ 단계 μ„±μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€!
8-
<!--
9-
<br>
10-
<hr>
11-
12-
:blue_book:TOCκ°€ λ“€μ–΄κ°ˆ μžλ¦¬μž…λ‹ˆλ‹€. -->
13-
14-
<!-- START doctoc -->
15-
<!-- ref: https://github.com/technote-space/toc-generator -->
16-
<!-- END doctoc -->
8+
4. λ°œν‘œκ°€ μ•ˆμ •ν™”λ˜κ³ , 이둠이 끝날 λ•Œμ―€ μ§„ν–‰ 방식을 λ‹€μ‹œ λ³€κ²½ν•©λ‹ˆλ‹€.
9+
- μš”κ΅¬ν•˜λŠ” 과제, κΈ°λŠ₯, I/O에 λŒ€ν•΄ κ°μžκ°€ κ΅¬ν˜„ν•˜λŠ” μ‹œκ°„μ„ κ°–μŠ΅λ‹ˆλ‹€.
10+
- κ΅¬ν˜„ν•˜μ§€ λͺ»ν•΄λ„ μ΄ν›„λΆ€ν„°λŠ” 리더가 κ°•μ˜μ‹μœΌλ‘œ μ§„ν–‰ν•©λ‹ˆλ‹€.
11+
- νšŒμ°¨λ³„ μŠ€ν„°λ””κ°€ μ’…λ£Œλ˜λ©΄ μ±…μ˜ 이둠을 μ •λ¦¬ν•˜λŠ” λŒ€μ‹  μ½”λ“œ 리뷰와 ν”Όλ“œλ°±μœΌλ‘œ 각자의 μ„±μž₯을 κΎ€ν•©λ‹ˆλ‹€.
1712

1813
<br>
1914
<hr>
@@ -26,6 +21,8 @@
2621

2722
βœ… ν† μš”μΌμ€ μ˜€ν”„λΌμΈ 3μ‹œκ°„(λ°œν‘œμž 2λͺ…), μˆ˜μš”μΌμ€ 온라인 2μ‹œκ°„(정리 λ‚΄μš©μ— λŒ€ν•œ 리뷰 및 ν”Όλ“œλ°±)으둜 μ§„ν–‰ν•©λ‹ˆλ‹€.
2823

24+
βœ… 이둠 뢀뢄을 μ œμ™Έν•œ μ½”λ“œ κ΅¬ν˜„λΆ€λŠ” [μ—¬κΈ°](https://github.com/FECrash/JavascriptCrash-Making)둜 λΆ„λ¦¬ν•˜μ—¬ μ§„ν–‰ν•©λ‹ˆλ‹€.
25+
2926
<br>
3027
<hr>
3128

@@ -108,6 +105,30 @@
108105
<a href="https://github.com/FECrash/JavascriptCrash/blob/main/Javascript/built_in_object.md">빌트인 객체</a>
109106
</td>
110107
</tr>
108+
<tr height="140px">
109+
<td align="center" width="33%">
110+
πŸ’―
111+
<br>
112+
<a href="https://github.com/FECrash/JavascriptCrash/blob/main/Javascript/this.md">this</a>
113+
</td>
114+
<td align="center" width="33%">
115+
πŸ’―
116+
<br>
117+
<a href="https://github.com/FECrash/JavascriptCrash/blob/main/Javascript/execution_context.md">μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ</a>
118+
</td>
119+
<td align="center" width="33%">
120+
πŸ’―
121+
<br>
122+
<a href="https://github.com/FECrash/JavascriptCrash/blob/main/Javascript/closure.md">ν΄λ‘œμ €</a>
123+
</td>
124+
</tr>
125+
<tr height="140px">
126+
<td colspan="3" align="center" width="33%">
127+
πŸ’―
128+
<br>
129+
<a href="https://github.com/FECrash/JavascriptCrash/blob/main/Javascript/class.md">클래슀</a>
130+
</td>
131+
</tr>
111132
</table>
112133

113134
<br>
@@ -117,11 +138,12 @@
117138
<br>
118139

119140
### πŸ₯° μžλ°”μŠ€ν¬λ¦½νŠΈ νšŒμ°¨λ³„ μͺ½μ§€μ‹œν—˜
120-
> [μͺ½μ§€μ‹œν—˜μ§€μ˜ μ €μž‘κΆŒμ€ μ €μ—κ²Œ μžˆμŠ΅λ‹ˆλ‹€.](https://github.com/InSeong-So)
141+
> πŸ“Œμͺ½μ§€μ‹œν—˜μ§€μ˜ μ €μž‘κΆŒμ€ [InSeong-So](https://github.com/InSeong-So)μ—κ²Œ μžˆμŠ΅λ‹ˆλ‹€.
121142
122143
- 1회차 μͺ½μ§€μ‹œν—˜ [Link](https://docs.google.com/forms/d/e/1FAIpQLSejv3Q8BstGkDJm-yf6Eivc7TYlbknKTNK1NbkiMC99ALAJKg/viewform)
123144
- 2, 3회차 μͺ½μ§€μ‹œν—˜ [Link](https://docs.google.com/forms/d/e/1FAIpQLSdx2hjQxBAJYoDTfKzwDTnlfDosy88jhZ0wBKPbv8Eb20Hl_w/viewform)
124145
- 4회차 μͺ½μ§€μ‹œν—˜ [Link](https://docs.google.com/forms/d/e/1FAIpQLSfViuVWGHsSMS24Uj3pu4PXxxem-Dh9WGAg-cGPV1IzKqzx7A/viewform)
146+
- 5회차 μͺ½μ§€μ‹œν—˜ [Link](https://docs.google.com/forms/d/e/1FAIpQLSfAQ-vMwqN_Cyi3oZkKSdA4wpAWIhjG1cnfNCDpvFO_CM_W8A/viewform)
125147

126148
<br>
127149
<hr>
@@ -166,6 +188,10 @@
166188
- μ €μž₯μ†Œ Intro μˆ˜μ •
167189
- πŸ”§ `2021-09-19`
168190
- μ €μž₯μ†Œ 과제 μ•ˆλ‚΄ μ΄ˆμ•ˆ κ²Œμ‹œ
191+
- πŸ”§ `2021-09-28`
192+
- μ €μž₯μ†Œ 접근성을 μœ„ν•œ README κ°œμ„ 
193+
- πŸ”§ `2021-10-03`
194+
- 이둠 μ’…λ£Œ ν›„ μ§„ν–‰ 방식에 λŒ€ν•œ μ΄ˆμ•ˆ μž‘μ„±
169195

170196
<br>
171197
<hr>

0 commit comments

Comments
Β (0)