
์ ์ญ๋ณ์๋ฅผ ๋ฌด๋ถ๋ณํ๊ฒ ์ฌ์ฉํ๋ ๊ฑด ์ํํ๋ค.
๋๋ฌธ์ ๋ฐ๋์ ์ฌ์ฉํด์ผ ํ๋ ๊ฒ ์๋๋ผ๋ฉด, ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ญ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
๊ทธ๋ฐ๋ฐ ์ ์ ์ญ๋ณ์๋ฅผ ๋ฌด๋ถ๋ณํ๊ฒ ์ฌ์ฉํ๋ ๊ฒ ์ํํ ๊น?
๊ทธ ์ด์ ๋ฅผ ์์๋ณด์.
๋ณ์๋ ์ธ์ ๊ฐ ์๋ฉธํ๋ค.
๋ณ์๊ฐ ์์ฑ๋๊ณ ์๋ฉธ ๋ ๋๊น์ง๋ฅผ life cycle ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด allocate ๋ ์์ ๋ถํฐ,
๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด release ๋์ด์ ๊ฐ์ฉ memory pool์ ๋ฐํ๋๋ ์์ ๊น์ง๋ฅผ ๋งํ๋ค.
๋ณดํต ๋ณ์๋ ์์ ์ด ์ ์ธ๋ ์์น์์ ์์ฑ๋๊ณ ์๋ฉธ๋๋ค.
๊ทธ๋ฐ๋ฐ ํจ์ ๋ด์์ ์ ์ธ๋ ์ง์ญ๋ณ์๋?
ํจ์๊ฐ ํธ์ถ๋๋ฉด ๊ทธ์ ์ผ ์์ฑ๋๊ณ , ํจ์๊ฐ ์ข
๋ฃ๋๋ฉด ์๋ฉธํ๋ค.
์ ๊ทธ๋ด๊น?
์์์ ๋ณ์ ์ ์ธ์, ์ ์ธ๋ฌธ์ ์์น์๋ ์๊ด์์ด ๊ฐ์ฅ ๋จผ์ ์คํ๋๋ค๊ณ ํ์ง๋ง,,,,
์ด๋ ์ ์ญ ๋ณ์์ ํ์ ๋๋ ์ค๋ช
์ด๋ค.
ํจ์ ๋ด๋ถ์์ ์ ์ธํ ๋ณ์๋,
ํจ์๊ฐ ํธ์ถ๋ ์งํ, body์ ์ฝ๋๊ฐ ํ์คํ์ค ์คํ๋๊ธฐ ์ด์ ์ JavaScript ์์ง์ ์ํด ๋จผ์ ์คํ๋๋ค.
๊ทธ๋์ ์ง์ญ๋ณ์์ life cycle์ ํจ์์ life cycle๊ณผ ์ผ์นํ๊ฒ ๋๋ ๊ฒ์ด๋ค.
์ฌ์ค ์ง์ญ๋ณ์๊ฐ ํจ์๋ณด๋ค ์ค๋ ์์กดํ๋ ๊ฒฝ์ฐ๋ ์๋ค.
ํจ์ ๋ด๋ถ์์ ์์ฑ๋ ์ง์ญ๋ณ์๋ ํจ์๊ฐ ์์ฑํ scope์ ๋ฑ๋ก์ด ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ณ์๋ ์์ ์ด ๋ฑ๋ก๋ scope๊ฐ ์๋ฉธ๋ ๋ ๊น์ง,
์ฆ ๋ฉ๋ชจ๋ฆฌ ํด์ ๊ฐ ๋ ๋ ๊น์ง ์ ํจํ๋ค.
๊ทธ๋ฌ๋๊น hosting์ scope๋จ์๋ก ๋์ํ๋ค๋ ๊ฒ์ด๋ค.
๊ทธ๋์ ์ ์ญ๋ณ์์ ๋ฌธ์ ์ ์ ๋ฌด์์ด๋ผ๋ ๊ฑธ๊น?
์๋ฌต์ ๊ฒฐํจ
์ฒซ ๋ฌธ์ ์ ์, ๋ชจ๋ ์ฝ๋๊ฐ ์ ์ญ ๋ณ์๋ฅผ ์ฐธ์กฐํ๊ณ ๋ณ๊ฒฝํ ์ ์๋ค๋ ๊ฒ์ด๋ค.
๋ณ์์ scope๊ฐ ํด์๋ก ์ฝ๋์ ๊ฐ๋
์ฑ์ ๋จ์ด์ง๊ณ , ์๋์น ์์ ์ํ ๋ณ๊ฒฝ ๊ฐ๋ฅ์ฑ์ด ๋์์ ธ
๊ฒฐ๊ณผ์ ์ผ๋ก ์ํ๋๊ฐ ์์นํ๋ค.
๊ธด life cycle
memory source๋ฅผ ์ค๋ ๊ธฐ๊ฐ ์๋นํ๋ค.
์ด๋ก ์ธํด ์ด์ค ์ค๋ณต, ์๋์น์์ ์ฌํ ๋น ๊ฐ๋ฅ์ฑ์ด ๋์์ง๋ค.
scope chain ์์์ ์ข
์ ์ ์กด์ฌ
scope chain ์์์ ์ข
์ ์ ์กด์ฌํ๋ค๋ ๊ฑด, ๋ณ์ ๊ฒ์ ์ ๊ฐ์ฅ ๋ง์ง๋ง์ ๊ฒ์๋๋ค๋ ๋ป์ด๋ค.
์ฆ, ๋ณ์ ๊ฒ์ ์๋๊ฐ ๋๋ฆฌ๋ค.
์ฌ์ค ์ฒ์๊ณผ ์ข
์ ์ ๊ฒ์ ์๋ ์ฐจ์ด๊ฐ ๋ณ๋ก ํฌ์ง๋ ์๋ค.
ํ์ง๋ง ์ค์ํ ๊ฑด, ๋ถ๋ช
ํ ์ฐจ์ด๊ฐ ์กด์ฌํ๋ค ๋ ์ ์ด๋ค.
namespace ์ค์ผ
JavaScript๋, ํ์ผ์ด ๋ถ๋ฆฌ๋์ด ์์ด๋, ํ๋์ ์ ์ญ scope๋ฅผ ๊ณต์ ํ๋ค.
๋ค๋ฅธ ํ์ผ ๋ด์ ๋์ผ ์ด๋ฆ ๋ณ์์ ์ํด ์์์น ๋ชปํ ๊ฒฐ๊ณผ๊ฐ ๋์ฌ ์๋ ์๋ค๋ ๋ง์ด๋ค.
๊ทธ๋์ ์ฐ๋ฆฌ๋ ์ ์ญ ๋ณ์์ ์ฌ์ฉ์ ํผํด์ผํ๋ค.
์ด๋ฅผ ์ต์ ํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ ๋ช ๊ฐ์ง ์์๋ณด์.
์ฆ์ ์คํ ํจ์
์ฆ์ ์คํ ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด, ์ ์ญ ๋ณ์๋ฅผ ์์ฑํ์ง ์๋๋ค.
namespace ๊ฐ์ฒด
์ ์ญ์ namespace ๋ฅผ ๋ด๋นํ ๊ฐ์ฒด๋ฅผ property๋ก ์ถ๊ฐํ๋ค.
namespace๋ฅผ ๊ณ์ธต์ ์ผ๋ก ๊ตฌ์ฑํ๋ ๊ฒ์ด๋ค.
๊ทธ๋ฐ๋ฐ, namespace ๊ฐ์ฒด ์์ฒด๊ฐ ์ ์ญ ๋ณ์์ ํ ๋น๋๋ ๊ฑฐ๋ผ์, ๊ทธ๋ฅ ์ ์ฉํ ๋ฐฉ๋ฒ์ ์๋๋ผ๊ณ ํ๋ค.
๋ชจ๋ ํจํด
ํด๋์ค๋ฅผ ๋ชจ๋ฐฉํ ๋ฐฉ๋ฒ์ด๋ค.
๊ด๋ จ ์๋ ๋ณ์, ํจ์๋ฅผ ๋ชจ์์ ์ฆ์ ์คํ ํจ์๋ก ๊ฐ์ธ ๋ชจ๋์ ๋ง๋ ๋ค.
ES6 ๋ชจ๋ธ
ES6 ๋ชจ๋ธ์์๋, ๋์ด์ ์ ์ญ ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
ํ์ผ ์์ฒด์ ๋
์์ ๋ชจ๋ scope๋ฅผ ์ ๊ณตํ๋ฉฐ, ๋ชจ๋ ๋ด์ var ๋ณ์๋ ๋์ด์ ์ ์ญ๋ณ์๊ฐ ์๋๋ค.
๋ถ๋ช
ํ ๋ณ์ํํธ,,, ์์๋,,,, ๋ชจ๋ ์ ์ธ๋ฌธ์ ๊ฐ์ฅ ๋จผ์ ์คํ๋๋ฉฐ,
๋ณ์๋ ์ ์ธ๋ฌธ์ ์์น์๋ ์๊ด์์ด ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค๊ณ ํ๋ค.
๊ทธ๋ฐ๋ฐ ๊ฐ์๊ธฐ ์ฌ์ค์ ์ ์ญ๋ณ์์๋ง ํด๋นํ๋ ์ด์ผ๊ธฐ์๋ค๊ณ ๋ง์ ํ๋ค๋!!
๋ญ๊ฐ,, ์์ ๊ธฐ๋ถ,,
์๋ฌดํผ ์ ๊ธฐํ ์ฌ์ค.... ์์๊ฐ ์ ์์ด์ ์ข๊ธด ํ๋ค.