π μ€ν 컨ν μ€νΈ(Execution Context) λ?
μ€ν 컨ν μ€νΈλ μ€ν κ°λ₯ν μ½λκ° μ€νλκΈ° μν΄ νμν νκ²½μ΄λ€.
π μ€ν 컨ν μ€νΈμ μ’ λ₯
π μ μ 컨ν μ€νΈ (Global Context)
- μ μ μμμ μ‘΄μ¬νλ μ½λμ μ€ν 컨ν μ€νΈ
- μ€ν 컨ν μ€νΈκ° μμ±μ΄ λλ©΄, μ€νμ μμΈλ€.
- μ΄ν리μΌμ΄μ μ΄ μ’ λ£λ λ(μΉ νμ΄μ§μμ λκ°κ±°λ λΈλΌμ°μ λ₯Ό λ«μ λ) μλ©Έλλ€.
- windowκ° thisλ‘ ν λΉλλ€.
π ν¨μ 컨ν μ€νΈ (Function Context)
- ν¨μ λ΄μ μ‘΄μ¬νλ μ½λμ μ€ν 컨ν μ€νΈ
- μ μΈλ ν¨μκ° νΈμΆμ΄ λ λ μ€ν 컨ν μ€νΈκ° μμ±μ΄ λκ³ , μ€νμ μμΈλ€.
- ν¨μμ λͺ¨λ λμ(μ€ν)μ΄ μλ£λλ©΄, ν¨μ 컨ν μ€νΈλ μλ©Έλλ€. (ν΄λ‘μ μ¬μ©νλ©΄ μλ©ΈX)
π μ€ν 컨ν μ€νΈμ κ°μ²΄
μ€ν 컨ν μ€νΈλ μ€ν κ°λ₯ν μ½λλ₯Ό νμννκ³ κ΅¬λΆνλ μΆμμ μΈ κ°λ μ΄μ§λ§ 물리μ μΌλ‘λ κ°μ²΄μ ννλ₯Ό κ°μ§λ©° 3κ°μ§ νλ‘νΌν°λ₯Ό μμ νλ€.
π 1. λ³μ κ°μ²΄ (Variable Object)
- λ³μ
- 맀κ°λ³μ(parameter), μΈμ(arguments) μ 보
- ν¨μ μ μΈ
π 2. μ€μ½ν μ²΄μΈ (Scope Chain)
β μ€μ½νλ? μμμ μλ―Ένλ€. (μ μ μμ, outer ν¨μ μμ, inner ν¨μ μμ ...)
β μ€μ½ν체μΈμ΄λ? μ€μ½ν κ°μ μ΄μ΄μ§ μνκ΄κ³λ₯Ό μλ―Ένλ€.
μ€ν 컨ν μ€νΈ μμ± ν, ν¨μκ° μ€νλλλ° μ¬μ©λλ λ³μλ€μ λ³μ κ°μ²΄ μμμ κ°μ μ°Ύκ³ μλ€λ©΄ μ€μ½ν체μΈμ λ°λΌ μ¬λΌκ°λ©° μ°Ύλλ€.
- μ μ λλ ν¨μκ° μ°Έμ‘°ν μ μλ λ³μ, ν¨μ μ μΈ λ± μ 보μ 리μ€νΈ
π 3. this value
this νλ‘νΌν°μλ this κ°μ΄ ν λΉλλ€. thisμ ν λΉλλ κ°μ ν¨μ νΈμΆ ν¨ν΄(gloabal, functionInvocation, call·apply·bind, Construction, MethodInvication)μ μν΄ κ²°μ λλ€.
μ¦, μλ°μ€ν¬λ¦½νΈμ μ½λκ° μ€νλκΈ° μν΄ λ³μ κ°μ²΄, μ€μ½ν 체μΈ, this μ 보λ€μ λ΄κ³ μλ κ³³μ 'μ€ν 컨ν μ€νΈ'λΌκ³ νλ€.
π μ°Έκ³ μλ£
- μ€ν 컨ν μ€νΈμ μλ°μ€ν¬λ¦½νΈμ λμ μ리
- Execution Context(μ€ν 컨ν μ€νΈ)λ?
- νλ‘ νΈμλ κ°λ°μ λ©΄μ μ§λ¬Έ μ 리
- μ¬μ§ μΆμ²
π‘ κ°μ΄ 보면 μ’μ Post