๐ก ์คํ ์ปจํ ์คํธ (Execution Context)
ํจ์ ์คํ ์ ํ์ํ ์กฐ๊ฑด / ํ๊ฒฝ ์ ๋ณด๋ฅผ ๋ด์ ๊ฐ์ฒด์ ๋๋ค.
VariableEnvironment
LexicalEnvironment
ThisBinding
์์ | ์ค๋ช |
---|---|
VariableEnvironment | ํ์ฌ์ ์คํ ํ๊ฒฝ๊ณผ ๊ด๋ จ๋ ์๋ณ์๋ฅผ ์์งํด ์ค๋ ์ท์ผ๋ก ๋ง๋ญ๋๋ค. |
LexicalEnvironment | ํ์ฌ์ ์คํ ํ๊ฒฝ๊ณผ ๊ด๋ จ๋ ์๋ณ์์ ๋ด๊ธด ๋ฐ์ดํฐ๋ฅผ ์ถ์ ํฉ๋๋ค. |
ThisBinding | ํจ์ ํธ์ถ (Function.prototype.call) ์ ๋งค๊ฐ๋ณ์๋ก ๋๊ฒจ๋ฐ์ this์ ์ฐธ์กฐ๊ฐ์ ๋๋ค. |
LexicalEnvironment | VariableEnvironment | |
---|---|---|
์ฉ๋ | ์๋ณ์์ ๋ด๊ธด ๋ฐ์ดํฐ๋ฅผ ์ถ์ ํ๋ ์ฉ๋ | ์๋ณ์ ์์ง ์ฉ๋ |
๊ฐ ๋ณํ | โ ์ค์๊ฐ ๋ณํ ๋ฐ์ | โ Never changes |
๊ตฌ์ฑ์์ | environmentRecord : ์คํ ์ปจํ ์คํธ์ creation phase์ ํ์ฌ ์ปจํ ์คํธ์ ์๋ณ์ ์ ๋ณด ์์ง Hoisting์ด ์ผ์ด๋ฉ๋๋ค. outerEnvironmentReference : ์ธ๋ถ ํ๊ฒฝ ์ฐธ์กฐ ์ค์ฝํ ์ฒด์ด๋์ด ์ผ์ด๋ฉ๋๋ค. | environmentRecord์ outerEnvironmentRecord์ ์ค๋ ์ท |
๐ ฐ Creation Phase (Compilation)
ใ๋ณ์/ํจ์ ์ ์ธ, ๋งค๊ฐ๋ณ์, scope ์ ๋ณด ์์งใ
๐ ฑ Execution Phase
ใ๊ฐ ํ ๋น ๋ฐ ๊ตฌ๋ฌธ ์คํใ
๐ Functional EC
ํจ์ ๋ฒ์์ ์คํ ์ปจํ ์คํธ์ ๋๋ค.
๐ Global EC
์ ์ญ ๋ฒ์์ ์คํ ์ปจํ ์คํธ์ ๋๋ค.
ํ๋ก๊ทธ๋จ๊ณผ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ฐ์ดํฉ๋๋ค.
๐งฉ Moudule EC
๋ชจ๋ ๋ฒ์์ ์คํ ์ปจํ ์คํธ์ ๋๋ค.
import ๋ ๋ ์์ฑ๋๊ณ ๋ชจ๋ ์ฝ๋๊ฐ ๋๋๋ฉด ์ข ๋ฃ๋ฉ๋๋ค.
๐ซ Eval EC (Deperecated)
eval()
์ ์คํํ์ ๋ ์์ฑ๋๋ ์คํ ์ปจํ ์คํธ์ ๋๋ค.
๋ณด์์ ์ทจ์ฝ์ ์ ๊ฐ๊ณ ์์ด ๊ฑฐ์ ์ฌ์ฉ๋์ง ์์ต๋๋ค.