ν°μ€ν 리 λ·°
1οΈβ£ μ€ν 컨ν μ€νΈλ?
μλ°μ€ν¬λ¦½νΈ μμ§μ΄ μ½λλ₯Ό μ€νν λ, μ΄ μ½λκ° μ΄λμ μ€νλλμ§, μ΄λ€ λ³μμ μ κ·Όν μ μλμ§, thisλ 무μμ κ°λ¦¬ν€λμ§ λ±μ μ 보λ₯Ό μμμΌ νλ€. μ΄ λͺ¨λ μ 보λ₯Ό λ΄κ³ κ΄λ¦¬νλ κ°μ²΄κ° λ°λ‘ μ€ν 컨ν
μ€νΈμ΄λ€. μ½λκ° μ€νλλ©΄ μ΄ μ€ν 컨ν
μ€νΈκ° μ½ μ€ν(Call Stack)μ μμ΄κ² λλ€.
2οΈβ£ μ€ν 컨ν μ€νΈμ μ’ λ₯
μλ°μ€ν¬λ¦½νΈμ μ€ν 컨ν μ€νΈλ ν¬κ² λ κ°μ§λ‘ λλλ€.
- μ μ μ€ν 컨ν
μ€νΈ (Global Execution Context)
- λ¨ ν λ² μμ±λλ κΈ°λ³Έ 컨ν μ€νΈλ‘μ, λͺ¨λ μ½λ μ€νμ΄ λλ λκΉμ§ μ μ§λλ€. μ μ λ³μμ μ μ ν¨μλ₯Ό κ΄λ¦¬νλ€.
- ν¨μ μ€ν 컨ν
μ€νΈ (Function Execution Context)
- ν¨μκ° νΈμΆλ λλ§λ€ ν΄λΉ ν¨μμ λν μ€ν 컨ν μ€νΈκ° μμ±λκ³ , ν¨μ μ€νμ΄ μλ£λ λκΉμ§ μ μ§λλ€. ν¨μ λ΄μ μ μΈλ λ³μμ ν¨μ, λ§€κ° λ³μ λ±μ κ΄λ¦¬νλ€.
eval μ€ν 컨ν μ€νΈ (Eval Execution Context)
3οΈβ£ μ€ν 컨ν μ€νΈκ° κ°λ μ 보
μ€ν 컨ν
μ€νΈκ° μ€νλλ©΄ 1οΈβ£ λ μ컬 νκ²½μ μμ±νκ³ 2οΈβ£ this λ°μΈλ©μ νλ€.
- λ μ컬 νκ²½ (Lexical Environment) μμ±
- νκ²½ λ μ½λ (Environment Record)
- 컨ν μ€νΈ λ΄λΆμ λ³μμ ν¨μ μ μΈμ΄ κ΄λ¦¬λλ 곡κ°μ΄λ€.
varλ‘ μ μΈλ λ³μλundefinedλ‘ μ΄κΈ°νλμ΄ λ±λ‘λλ€.- ν¨μ μ μΈλ¬Έμ ν¨μ κ°μ²΄ μ μ²΄κ° λ±λ‘λλ€.
- μΈλΆ λ μ컬 νκ²½ μ°Έμ‘° (Outer Lexical Environment Reference)
- νμ¬ μ»¨ν μ€νΈμ μμ 컨ν μ€νΈλ₯Ό κ°λ¦¬ν€λ μ°Έμ‘°μ΄λ€.
- νμ¬ μ»¨ν μ€νΈμμ λ³μλ₯Ό μ°Ύμ§ λͺ»νλ©΄ μ΄ μ°Έμ‘°λ₯Ό λ°λΌ μ¬λΌκ°λ©° μμ λ μ컬 νκ²½μ νμνλ€. → μ€μ½ν μ²΄μΈ (Scope Chain)μ ꡬν λ°©μ
- νκ²½ λ μ½λ (Environment Record)
- μ½λκ° μμ±λ λ¬Έλ§₯μ λ°νμΌλ‘, λ€μ λ κ°μ§ μ λ³΄λ‘ κ΅¬μ±λλ λ μ컬 νκ²½μ μμ±νλ€.
thisλ°μΈλ©thisν€μλκ° κ°λ¦¬ν¬ κ°μ κ²°μ νλ€.
'π κ³΅λΆ > Javascript' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| Typescriptμμ Object.keys()κ° νμ string[] νμ μΈ μ΄μ (0) | 2026.01.12 |
|---|