View
์์ฑ์ค๐์ ๋ฆฌํ๊ธฐ!!๐
ํจ์๋ variable environment (VE)์ ์ ๊ทผํ๋ค
excution context๊ฐ ์์ฑ๋ ๋์
์ฌ์ง์ด ๊ทธ EC๊ฐ ์ฌ๋ผ์ง๋์๋
booker ํจ์๊ฐ ์์ฑ๋ ๋์ ์ค์ฝํ์ ์ ์๋์๋ค. (๊ฐ์ 136)
VE๋ ๊ณ์ ์ด์์๋ค. ์์ง์ด๋๊ฐ์
closure๋ ์ค์ฝํ์ฒด์ธ๋ณด๋ค ๋จผ์
์๊ธฐ๋ค ํจ์ ์์์ ์ฐพ์ ์ ์๋ ๋ณ์๋ฅผ closure์์ ๋จผ์ ์ฐพ์ง scope chain์์ ์ฐพ์ง ์๋๋ค. ๊ทธ ์ดํ์ ์ฐพ๋๋ค.
closure: Variable Environment ๊ฐ ํจ์์ ๋ถ์ด์๋ค.
์ ํํ ๊ทธ ํจ์๊ฐ ์์ฑ๋ ๊ทธ ๋์
๊ทธ๋์ ๊ทธ๊ฑธ ๊ธฐ์ตํ๊ณ ์ฌ์ฉํ ์ ์๋ค.
ํด๋ก์ ๋ ํจ์๊ฐ ์ ๊ทผํ ์ ์๋๋ก ํ๋ค. ๊ทธ ๋ถ๋ชจ ํจ์๊ฐ ๊ฐ์ง๊ณ ์๋ variable์ ์ ๊ทผํ ์ ์๋๋ก ํ๋ค. ์ฌ์ง์ด ๊ทธ ๋ถ๋ชจ ํจ์๊ฐ return๋ ์ดํ์๋
ํจ์๋ ๊ณ์ ์ฐธ์กฐํ๋ค. ์ค์ฝํ์ฒด์ธ์ ์ ์ง(๋ณด์กด)ํ๋ ๊ทธ outer scope๋ฅผ
ํด๋ก์ ๋ ํจ์๊ฐ "๊ทธ ํจ์๊ฐ ์์ฑ๋ ๋ ์กด์ฌํ๋ variables"์์ ์ฐ๊ฒฐ์ ์์ง ์๊ฒ ํ๋ค
์ฐ๋ฆฌ๋ manually ํด๋ก์ ๋ฅผ ๋ง๋ค ํ์๊ฐ ์๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์๋ ์๋์ ์ผ๋ก ๋ง๋ค์ด์ง๋ ํน์ง์ด๋ค.
์ฐ๋ฆฌ๋ ํด๋น variable์ ๋ช
์์ ์ผ๋ก ์ ๊ทผ๋ ํ ์ ์๋ค.
closure๋ ์๋๋ค. ๋ช
์์ ์ธ/๋ง์ ธ์ ์ ์ ์๋(tangible).. ๊ทธ๋ฐ object๊ฐ ์๋๋ค.
๊ฐ๋ฐ์๋๊ตฌ console.dir(booker);
Scopes๊ฐ VE์ด๋ค
[[Scopes]]: Scopes[3]
0: Closure (secureBooking)
passengerCount: 3
[[]] ์ฝ๋๋ก๋ ์ ๊ทผํ ์ ์๋ internal property
closure๋ argumentsํฌํจํ๋ค -> ํจ์์์์ ์ง์ญ๋ณ์์ด๊ธฐ ๋๋ฌธ