์ฝ๋๋ฅผ ์คํํ ๋ ํ์ํ ๋ฐฐ๊ฒฝ์ด ๋๋ ์กฐ๊ฑด/ํ๊ฒฝ
โ ์คํ์ปจํ
์คํธ๋ ํจ์๋ฅผ ์คํํ ๋ ํ์ํ ํ๊ฒฝ ์ ๋ณด๋ฅผ ๋ด์ ๊ฐ์ฒด์ด๋ค.
๋์ผํ ์กฐ๊ฑด/ํ๊ฒฝ์ ์ง๋๋ ์ฝ๋ ๋ญ์น๋ฅผ ์คํํ ๋ ํ์ํ ์กฐ๊ฑด/ํ๊ฒฝ์ ๋ณด
๊ฒฐ๋ก : ํด๋น ์กฐ๊ฑด ์ ๋ถ ํจ์์ด๋ค.
๋จ) if/for/switch/while...'๋ฌธ'? โ ๋ธ๋ก์ค์ฝํ
ES6์์ ๋ธ๋ก์ค์ฝํ ๊ฐ๋ ์ด ์ถ๊ฐ๋๋ฉด์let
๊ณผconst
์ ๋ํด์ ๋ณ๊ฐ์ ๋ ๋ฆฝ๋ ์ญํ ์ ํ๊ณ ๋ ์์ง๋ง ๋ณ๊ฐ์ ์คํ ์ปจํ ์คํธ๋ฅผ ์์ฑํ์ง ์๋๋ค.
์ต์ข ๊ฒฐ๋ก : ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ค์ง ํจ์์ ์ํด์๋ง ์ปจํ ์คํธ๋ฅผ ๊ตฌ๋ถํ ์ ์๋ค๋ ์ ์ด๋ค.
ํ์ฌ ์ด๋ค ํจ์๊ฐ ๋์์ค์ธ์ง ๋ค์์ ์ด๋ค ํจ์๊ฐ ํธ์ถ๋ ์์ ์ธ์ง ๋ฑ์ ์ ์ดํ๋ ์๋ฃ๊ตฌ์กฐ
Variable Environment
์ Lexical Environment
์ ์ฐจ์ด๋ ๊ฐ์ ๋ณํ๊ฐ ์ค์๊ฐ์ผ๋ก ๋ฐ์๋๋๋ ๊ทธ๋ ์ง ์๋๋์ ์ฐจ์ด๊ฐ ์๋ค.
์คํ์ปจํ ์คํธ๋ฅผ ๊ตฌ์ฑํ๋ ํ๊ฒฝ ์ ๋ณด๋ค์ ๋ชจ์ ์ฌ์ ์ฒ๋ผ ๊ตฌ์ฑํ ๊ฐ์ฒด
์์) ๐์คํ ์ปจํ ์คํธ A ํ๊ฒฝ ์ฌ์
- ๋ด๋ถ ์๋ณ์ a : ํ์ฌ ๊ฐ์ undefined ์ด๋ค.
- ๋ด๋ถ ์๋ณ์ b : ํ์ฌ ๊ฐ์ 20์ด๋ค.
- ์ธ๋ถ ์ ๋ณด : D๋ฅผ ์ฐธ์กฐํ๋ค.
ํ์ฌ ๋ฌธ๋งฅ์ ์๋ณ์ ์ ๋ณด๊ฐ ์์ง๋๋ค.
์คํ ์ปจํ
์คํธ๊ฐ ์ต์ด ์คํ ๋ ๋ ์ ์ผ ๋จผ์ ํ๋ ์ผ environmentRecord์ด๋ค.
โจ ์์ง๊ณผ์ ์์ ๋ฐ์ํ๋ ํ์์ ์ข ๋ ์ฝ๊ฒ ์๊ฐํ ์ ์๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ์๋ค.
โ ํ์ฌ ์ปจํ
์คํธ ์๋ณ์ ์ ๋ณด๋ฅผ ์์งํด์ environmentRecord์ ๋ด๋ ๊ณผ์ ์ด ์์ง ๊ณผ์ ์ ํธ์ด์คํ
(์๋ณ์ ์ ๋ณด๋ฅผ ๋์ด ์ฌ๋ฆฐ๋ค)์ด๋ผ๊ณ ํ๋ค.
ํธ์ด์คํ ์ ํจ์ ์ ์ธ๋ฌธ์ ์ ์ฒด๋ฅผ ๋์ด ์ฌ๋ฆฐ๋ค.
ํ์ฌ ๋ฌธ๋งฅ์ ๊ด๋ จ ์๋ ์ธ๋ถ ์๋ณ์ ์ ๋ณด
inner ํจ์์์ ์ ์ธํ ๋ณ์๋ outer ํจ์์์ ์ ๊ทผํ ์ ์๋ค.
์๋ํ๋ฉด outer ํจ์์๋ inner ํจ์์ LexicalEnvironment์ ๋ํ ์ ๊ทผํ ์ ์๋ ์๋จ์ด ์๋ค.(์ฐธ์กฐํ๊ณ ์๋ ๋์์ด ์๋ค.)
inner ์ปจํ
์คํธ์์ ์ ์ธํ ๋ณ์๋ environmentRecord์ ์ํด์ ์ ๊ทผํ ์ ์๋ค. outerEnvironmentReference๋ฅผ ํตํด์ outerํจ์์ LexicalEnvironment ์ ๋ณด์๋ ์ ๊ทผํ ์ ์๋ค.
โ๏ธ์ ์ฌ์ง ์ฐธ๊ณ
1. inner ํจ์์์ "์ด๋ค ๋ณ์๋ฅผ ์ฐพ์๋ผ"๋ผ๊ณ ๋ช
๋ น
2. ์ผ๋จ environmentRecord์์ ํด๋น ๋ณ์๊ฐ ์๋์ง ์ฐพ๋๋ค.
3. ๋ง์ฝ inner์ ์๋ค๋ฉด outerEnvironment Reference๋ฅผ ํ๊ณ outerํจ์ environmentRecord์์ ๋ณ์๋ฅผ ์ฐพ๋๋ค.
4. outer์๋ ํด๋น ๋ณ์๊ฐ ์๋ค๋ฉด outerEnvironmentReference๋ฅผ ํ๊ณ ์ ์ญ ์ปจํ
์คํธ์๊ฐ์ ์ ์ญ์ปจํ
์คํธ์ environmentRecord์์ ํด๋น ๋ณ์๋ฅผ ์ฐพ๋๋ค.
์ด๋ฌํ ๊ณผ์ ์ด SCOPE CHAIN์ด๋ค.
innerํจ์์์ a๋ฅผ ์ฐพ๋๋ค
ํ์ง๋ง innerํจ์์๋ a๊ฐ ์๋ค. ๊ทธ๋ฆฌ๊ณ outerํจ์์ a=2 ์ ์ญ์ปจํ
์คํธ์๋ a=3์๋ค ๊ทธ๋์ innerํจ์๋ outerEnvironmentReference๋ก ๋จผ์ outerํจ์๊ฐ ์๊ธฐ ๋๋ฌธ์ a=2๊ฐ ๋๊ฒ ๋๋ค.
์ ๋ฆฌ
๊ฐ์ฅ ๊ฐ๊น์ด ์๊ธฐ ์์ ๋ถํฐ ์ ์ ๋ฉ๋ฆฌ ์๋ ์ค์ฝํ๋ก ์ฐพ์ ๋๊ฐ๋ ๊ฒ
์ฆ ๊ฐ์ฅ ๊ฐ๊น์ด ๊ณณ์์ ๊ฐ์ฅ ๋จผ์ ์ฐพ์์ง๋ ๊ฒ๋ง ์ ๊ทผ - shadowing ๊ฐ๋