EXECUTION CONTEXT
λ³μλ ν¨μμ μ€ν 컨ν μ€νΈ(execution context)λ scope, hosting, this, function, closure λ±μ λμμ리λ₯Ό λ΄κ³ μλ ν΅μ¬μλ¦¬λ‘ λ€λ₯Έ λ°μ΄ν°μ μ κ·Όν μ μλμ§, μ΄λ»κ² νλνλμ§λ₯Ό κ·μ νλ€.
ECMAScriptμ λ°λ₯΄λ©΄ μ€ν 컨ν μ€νΈλ₯Ό μ€ν κ°λ₯ν μ½λλ₯Ό νμννκ³ , ꡬλΆνλ μΆμμ μΈ κ°λ μΌλ‘ μ¦, μ€ν 컨ν μ€νΈλ μ€ν κ°λ₯ν μ½λκ° μ€νλκΈ° μν΄ νμν νκ²½μ΄λΌ λ§ν μ μλ€.
μ μ μ½λ : μ 체 μμμ μ‘΄μ¬νλ μ½λ
eval μ½λ :
eval
ν¨μλ‘ μ€νλλ μ½λν¨μ μ½λ : ν¨μ λ΄μ μ‘΄μ¬νλ μ½λ
μΌλ°μ μΌλ‘ μ€ν κ°λ₯ν μ½λλ μ μ μ½λμ ν¨μ λ΄ μ½λμ΄λ€.
μ€νμ νμν μ 보
λ³μ : μ μλ³μ, μ§μλ³μ, λ§€κ°λ³μ, κ°μ²΄μ νλ‘νΌν°
ν¨μ μ μΈ
scope
this
var x = 'xxx';
function foo(){
var y = 'yyy';
function bar(){
var z = 'zzz';
console.log(x + y + z);
}
bar();
}
foo();
μ μ½λλ₯Ό μ€ννλ©΄ μλμ κ°μ΄ μ€ν 컨ν μ€νΈ(stack)μ΄ μμ±νκ³ μλ©Έλλ€. νμ¬ μ€ν μ€μΈ 컨ν μ€νΈμ μκ΄ μλ μ½λ(μλ₯Ό λ€μ΄ λ€λ₯Έ ν¨μ)κ° μ€νλλ©΄ μλ‘μ΄ μ»¨ν μ€νΈκ° μμ±λλ€.

컨νΈλ‘€μ΄ μ€ν κ°λ₯ν μ½λλ‘ μ΄λνλ©΄ λ Όλ¦¬μ μ€ν ꡬ쑰λ₯Ό κ°μ§λ μ€ν 컨ν μ€νΈ μ€νμ΄ μμ±λλ€.
μ μ μ½λ(global code)λ‘ μ»¨νΈλ‘€μ΄ μ§μ νλ©΄ μ μ μ€ν 컨ν μ€νΈκ° μμ±λκ³ μ€ν 컨ν μ€νΈ μ€νμ μμΈλ€. μ μ μ€ν 컨ν μ€νΈλ μ ν리μΌμ΄μ μ΄ μ’ λ£λ λ(μΉ νμ΄μ§μμ λκ°κ±°λ λΈλΌμ°μ λ₯Ό λ«μλ)κΉμ§ μ μ§λλ€.
ν¨μλ₯Ό νΈμΆνλ©΄ ν΄λΉ ν¨μμ μ€ν 컨ν μ€νΈκ° μμ±λλ©° μ§μ μ μ€νλ μ½λ λΈλ‘μ μ€ν 컨ν μ€νΈ μμ μμΈλ€.
ν¨μ μ€νμ΄ λλλ©΄ ν΄λΉ ν¨μμ μ€ν 컨ν μ€νΈλ₯Ό νκΈ°νκ³ μ§μ μ μ€ν 컨ν μ€νΈμ 컨νΈλ‘€μ λ°ννλ€.
μ€ν 컨ν μ€νΈλ ν¬ν¨λ μ½λκ° λͺ¨λ μ€νλ λ νκΈ°λλλ°, μ΄λ ν΄λΉ 컨ν μ€νΈ λ΄λΆμμ μ μλ λ³μμ ν¨μλ ν¨κ» νκ΄΄λλ€.
μ€ν 컨ν
μ€νΈ κ°μ²΄
μ€ν 컨ν μ€νΈλ μ€ν κ°λ₯ν μ½λλ₯Ό νμννκ³ κ΅¬λΆνλ μΆμμ μΈ κ°λ μ΄μ§λ§ 물리μ μΌλ‘λ κ°μ²΄μ ννλ₯Ό κ°μ§λ€.

Variable Object ( VO ) λ³μκ°μ²΄
μ€ν 컨ν μ€νΈκ° μμ±λλ©΄ μλ°μ€ν¬λ¦½νΈ μμ§μ μ€νμ νμν μ¬λ¬ μ 보λ€μ λ΄μ κ°μ²΄λ₯Ό μμ±νλλ° μ΄λ₯Ό Variable ObjectλΌκ³ νλ€. Variable Objectλ μ½λκ° μ€νλ λ μμ§μ μν΄ μ°Έμ‘°λλ©° μ½λμμλ μ κ·Όν μ μλ€.
λ³μ
λ§€κ°λ³μ(parameter)μ μΈμ(arguments)
ν¨μ μ μΈ( ν¨μ ννμ μ μΈ )
μ μ 컨ν
μ€νΈ
Variable Objectλ μ μΌνλ©° μ΅μμμ μμΉνκ³ λͺ¨λ μ μ λ³μ, μ μ ν¨μ λ±μ ν¬ν¨νλ μ μ κ°μ²΄(Global Object )λ₯Ό κ°λ¦¬ν¨λ€. μ μ κ°μ²΄λ μ μμ μ μΈλ μ μ λ³μμ μ μ ν¨μλ₯Ό νλ‘νΌν°λ‘ μμ νλ€.

ν¨μ 컨ν
μ€νΈ
Variable Objectλ νμ± κ°μ²΄(Activation Object)λ₯Ό κ°λ¦¬ν€λ©° λ§€κ° λ³μμ μΈμλ€μ μ 보λ₯Ό λ°°μ΄μ ννλ‘ λ΄κ³ μλ κ°μ²΄μΈ arguments objectκ° μΆκ°λλ€.

Scope Chain
Scope Chainμ μΌμ’ μ 리μ€νΈλ‘ μ μ κ°μ²΄μ μ€μ²©λ ν¨μμ μ€μ½νμ λ νΌλ°μ€λ₯Ό μ°¨λ‘λ‘ μ μ₯νκ³ μλ€. μ¦, μ€μ½ν 체μΈμ μ μ κ°μ²΄( GO) νΉμ νμ± κ°μ²΄(AO)μ 리μ€νΈλ₯Ό κ°λ¦¬ν¨λ€.
μ°Έμ‘° νμ΄μ§
Last updated
Was this helpful?