EXECUTION CONTEXT
Last updated
Was this helpful?
Last updated
Was this helpful?
Was this helpful?
๋ณ์๋ ํจ์์ ์คํ ์ปจํ ์คํธ(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';
์ ์ฝ๋๋ฅผ ์คํํ๋ฉด ์๋์ ๊ฐ์ด ์คํ ์ปจํ ์คํธ(stack)์ด ์์ฑํ๊ณ ์๋ฉธ๋๋ค. ํ์ฌ ์คํ ์ค์ธ ์ปจํ ์คํธ์ ์๊ด ์๋ ์ฝ๋(์๋ฅผ ๋ค์ด ๋ค๋ฅธ ํจ์)๊ฐ ์คํ๋๋ฉด ์๋ก์ด ์ปจํ ์คํธ๊ฐ ์์ฑ๋๋ค.
์ปจํธ๋กค์ด ์คํ ๊ฐ๋ฅํ ์ฝ๋๋ก ์ด๋ํ๋ฉด ๋ ผ๋ฆฌ์ ์คํ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ ์คํ ์ปจํ ์คํธ ์คํ์ด ์์ฑ๋๋ค.
์ ์ญ ์ฝ๋(global code)๋ก ์ปจํธ๋กค์ด ์ง์ ํ๋ฉด ์ ์ญ ์คํ ์ปจํ ์คํธ๊ฐ ์์ฑ๋๊ณ ์คํ ์ปจํ ์คํธ ์คํ์ ์์ธ๋ค. ์ ์ญ ์คํ ์ปจํ ์คํธ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ข ๋ฃ๋ ๋(์น ํ์ด์ง์์ ๋๊ฐ๊ฑฐ๋ ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ซ์๋)๊น์ง ์ ์ง๋๋ค.
ํจ์๋ฅผ ํธ์ถํ๋ฉด ํด๋น ํจ์์ ์คํ ์ปจํ ์คํธ๊ฐ ์์ฑ๋๋ฉฐ ์ง์ ์ ์คํ๋ ์ฝ๋ ๋ธ๋ก์ ์คํ ์ปจํ ์คํธ ์์ ์์ธ๋ค.
ํจ์ ์คํ์ด ๋๋๋ฉด ํด๋น ํจ์์ ์คํ ์ปจํ ์คํธ๋ฅผ ํ๊ธฐํ๊ณ ์ง์ ์ ์คํ ์ปจํ ์คํธ์ ์ปจํธ๋กค์ ๋ฐํํ๋ค.
์คํ ์ปจํ ์คํธ๋ ํฌํจ๋ ์ฝ๋๊ฐ ๋ชจ๋ ์คํ๋ ๋ ํ๊ธฐ๋๋๋ฐ, ์ด๋ ํด๋น ์ปจํ ์คํธ ๋ด๋ถ์์ ์ ์๋ ๋ณ์์ ํจ์๋ ํจ๊ป ํ๊ดด๋๋ค.
์คํ ์ปจํ ์คํธ๋ ์คํ ๊ฐ๋ฅํ ์ฝ๋๋ฅผ ํ์ํํ๊ณ ๊ตฌ๋ถํ๋ ์ถ์์ ์ธ ๊ฐ๋ ์ด์ง๋ง ๋ฌผ๋ฆฌ์ ์ผ๋ก๋ ๊ฐ์ฒด์ ํํ๋ฅผ ๊ฐ์ง๋ค.
์คํ ์ปจํ ์คํธ๊ฐ ์์ฑ๋๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์คํ์ ํ์ํ ์ฌ๋ฌ ์ ๋ณด๋ค์ ๋ด์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋๋ฐ ์ด๋ฅผ Variable Object๋ผ๊ณ ํ๋ค. Variable Object๋ ์ฝ๋๊ฐ ์คํ๋ ๋ ์์ง์ ์ํด ์ฐธ์กฐ๋๋ฉฐ ์ฝ๋์์๋ ์ ๊ทผํ ์ ์๋ค.
๋ณ์
๋งค๊ฐ๋ณ์(parameter)์ ์ธ์(arguments)
ํจ์ ์ ์ธ( ํจ์ ํํ์ ์ ์ธ )
Variable Object๋ ์ ์ผํ๋ฉฐ ์ต์์์ ์์นํ๊ณ ๋ชจ๋ ์ ์ญ ๋ณ์, ์ ์ญ ํจ์ ๋ฑ์ ํฌํจํ๋ ์ ์ญ ๊ฐ์ฒด(Global Object )๋ฅผ ๊ฐ๋ฆฌํจ๋ค. ์ ์ญ ๊ฐ์ฒด๋ ์ ์ญ์ ์ ์ธ๋ ์ ์ญ ๋ณ์์ ์ ์ญ ํจ์๋ฅผ ํ๋กํผํฐ๋ก ์์ ํ๋ค.
Variable Object๋ ํ์ฑ ๊ฐ์ฒด(Activation Object)๋ฅผ ๊ฐ๋ฆฌํค๋ฉฐ ๋งค๊ฐ ๋ณ์์ ์ธ์๋ค์ ์ ๋ณด๋ฅผ ๋ฐฐ์ด์ ํํ๋ก ๋ด๊ณ ์๋ ๊ฐ์ฒด์ธ arguments object๊ฐ ์ถ๊ฐ๋๋ค.
Scope Chain์ ์ผ์ข ์ ๋ฆฌ์คํธ๋ก ์ ์ญ ๊ฐ์ฒด์ ์ค์ฒฉ๋ ํจ์์ ์ค์ฝํ์ ๋ ํผ๋ฐ์ค๋ฅผ ์ฐจ๋ก๋ก ์ ์ฅํ๊ณ ์๋ค. ์ฆ, ์ค์ฝํ ์ฒด์ธ์ ์ ์ญ ๊ฐ์ฒด( GO) ํน์ ํ์ฑ ๊ฐ์ฒด(AO)์ ๋ฆฌ์คํธ๋ฅผ ๊ฐ๋ฆฌํจ๋ค.