์ ์ญ ๋ณ์์ ๋ฌด๋ถ๋ณํ ์ฌ์ฉ์ ์ํํ๋ค. ์ ์ญ ๋ณ์๋ฅผ ๋ฐ๋์ ์ฌ์ฉํด์ผ ํ ์ด์ ๋ฅผ ์ฐพ์ง ๋ชปํ๋ค๋ฉด ์ง์ญ ๋ณ์๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
๋ณ์๋ ์ ์ธ์ ์ํด ์์ฑ๋๊ณ , ํ ๋น์ ํตํด ๊ฐ์ ๊ฐ์ง๋ฉฐ ์ธ์ ๊ฐ ์๋ฉธํ๋ค. ์ฆ, ๋ณ์๋ ์๋ช ์ฃผ๊ธฐ๊ฐ ์๋ค.
๋ณ์์ ์๋ช ์ฃผ๊ธฐ๊ฐ ์๋ค๋ฉด ํ๋ฒ ์ ์ธ๋ ๋ณ์๋ ํ๋ก๊ทธ๋จ์ ์ข ๋ฃํ์ง ์๋ ํ ์์ํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ ์ ํ๊ฒ ๋๋ค..
์ง์ญ ๋ณ์์ ์๋ช
์ฃผ๊ธฐ๋ ํจ์์ ์๋ช
์ฃผ๊ธฐ์ ์ผ์นํ๋ค.
var ํค์๋๋ก ์ ์ธํ ์ ์ญ ๋ณ์์ ์๋ช
์ฃผ๊ธฐ๋ ์ ์ญ ๊ฐ์ฒด์ ์๋ช
์ฃผ๊ธฐ์ ์ผ์นํ๋ค.
์ ์ญ ๋ณ์๋ฅผ ์ ์ธํ ์๋๋ ์ ์ญ, ์ฆ ์ด๋์๋ ์ฐธ์กฐํ๊ณ ํ ๋นํ ์ ์๋ ๋ณ์๋ฅผ ์ฌ์ฉํ๊ฒ ๋ค๋ ๊ฒ์ด๋ค. ์ด๋ ๋ชจ๋ ์ฝ๋๊ฐ ์ ์ญ ๋ณ์๋ฅผ ์ฐธ์กฐํ๊ณ ๋ณ๊ฒฝํ ์ ์๋ ์๋ฌต์ ๊ฒฐํจ์ ํ์ฉํ๋ ๊ฒ์ด๋ค.
๋ณ์์ ์ ํจ ๋ฒ์๊ฐ ํฌ๋ฉด ํด์๋ก ์ฝ๋์ ๊ฐ๋
์ฑ์ ๋๋น ์ง๊ณ ์๋์น ์๊ฒ ์ํ๊ฐ ๋ณ๊ฒฝ๋ ์ ์๋ ์ํ์ฑ๋ ๋์์ง๋ค.
์ ์ญ ๋ณ์๋ ์๋ช ์ฃผ๊ธฐ๊ฐ ๊ธธ๋ค. ๋ฐ๋ผ์ ๋ฉ๋ชจ๋ฆฌ ๋ฆฌ์์ค๋ ์ค๋ ๊ธฐ๊ฐ ์๋นํ๋ค. ๋ํ ์ ์ญ ๋ณ์์ ์ํ๋ฅผ ๋ณ๊ฒฝ ํ ์ ์๋ ์๊ฐ๋ ๊ธธ๊ณ ๊ธฐํ๋ ๋ง๋ค.
์ ์ญ ๋ณ์๋ ์ค์ฝํ ์ฒด์ธ ์์์ ์ข ์ ์ ์กด์ฌํ๋ค. ์ด๋ ๋ณ์๋ฅผ ๊ฒ์ํ ๋ ์ ์ญ ๋ณ์๊ฐ ๊ฐ์ฅ ๋ง์ง๋ง์ ๊ฒ์๋๋ค๋ ๊ฒ์ ๋งํ๋ค. ์ฆ ์ ์ญ ๋ณ์์ ๊ฒ์ ์๋๊ฐ ๊ฐ์ฅ ๋๋ฆฌ๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์ ๊ฐ์ฅ ํฐ ๋ฌธ์ ์ ์ค ํ๋๋ ํ์ผ์ด ๋ถ๋ฆฌ๋์ด ์๋ค ํด๋ ํ๋์ ์ ์ญ ์ค์ฝํ๋ฅผ ๊ณต์ ํ๋ค๋ ๊ฒ์ด๋ค. ๋ฐ๋ผ์ ๋ค๋ฅธ ํ์ผ ๋ด์์ ๋์ผํ ์ด๋ฆ์ผ๋ก ๋ช ๋ช ๋ ์ ์ญ ๋ณ์๋ ์ ์ญ ํจ์๊ฐ ๊ฐ์ ์ค์ฝํ ๋ด์ ์กด์ฌํ ๊ฒฝ์ฐ ์์์น ๋ชปํ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ค.
์ ์ญ ๋ณ์์ ๋ฌด๋ถ๋ณํ ์ฌ์ฉ์ ์ํํ๋ค. **์ ์ญ ๋ณ์๋ฅผ ๋ฐ๋์ ์ฌ์ฉํด์ผ ํ ์ด์ ๋ฅผ ์ฐพ์ง ๋ชปํ๋ค๋ฉด ์ง์ญ ๋ณ์๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค. ๋ณ์์ ์ค์ฝํ๋ ์ข์์๋ก ์ข๋ค
๋ชจ๋ ์ฝ๋๋ฅผ ์ฆ์ ์คํ ํจ์๋ก ๊ฐ์ธ๋ฉด ๋ชจ๋ ๋ณ์๋ ์ฆ์ ์คํ ํจ์์ ์ง์ญ ๋ณ์๊ฐ ๋๋ค.
(function () {
var foo = 10; // ์ฆ์ ์คํ ํจ์์ ์ง์ญ ๋ณ์
// ...
}());
console.log(foo); // ReferenceError: foo is no defined
์ ์ญ์ ๋ค์์คํ์ด์ค ์ญํ ์ ๋ด๋นํ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ์ ์ญ ๋ณ์์ฒ๋ผ ์ฌ์ฉํ๊ณ ์ถ์ ๋ณ์๋ฅผ ํ๋กํผํฐ๋ก ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ด๋ค.
var MYAPP = {} ; // ์ ์ญ ๋ค์์คํ์ด์ค ๊ฐ์ฒด
MYAPP.name = "Lee";
console.log(MYAPP.name); // Lee
๋ค์์คํ์ด์ค๋ฅผ ๋ถ๋ฆฌํด์ ์๋ณ์ ์ถฉ๋์ ๋ฐฉ์งํ๋ ํจ๊ณผ๋ ์์ผ๋ ๋ค์์คํ์ด์ค ๊ฐ์ฒด ์์ฒด๊ฐ ์ ์ญ ๋ณ์์ ํด๋น๋๋ฏ๋ก ๊ทธ๋ค์ง ์ ์ฉํ์ง๋ ์๋ค.
๋ชจ๋ ํจํด์ ํด๋์ค๋ฅผ ๋ชจ๋ฐฉํด์ ๊ด๋ จ์ด ์๋ ๋ณ์์ ํจ์๋ฅผ ๋ชจ์ ์ฆ์ ์คํ ํจ์๋ก ๊ฐ์ธ ํ๋์ ๋ชจ๋์ ๋ง๋ ๋ค. ์ด๋ฌํ ๋ชจ๋ ํจํด์ ํด๋ก์ ๊ธฐ๋ฐ์ผ๋ก ๋์๋๋ค.
๋ชจ๋ ํจํด์ ๊ฐ์ฅ ํฐ ํน์ง์ ์ ์ญ ๋ณ์์ ์ต์ ๋ ๋ฌผ๋ก ์บก์ ํ๊น์ง ๊ตฌํํ ์ ์๋ค๋ ๊ฒ์ด๋ค.
ES6 ๋ชจ๋์ ์ฌ์ฉํ๋ฉด ๋๋ ์ ์ญ ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ES6 ๋ชจ๋์ ํ์ผ ์์ฒด์ ๋ ์์ ์ธ ๋ชจ๋ ์ค์ฝํ๋ฅผ ์ ๊ณตํ๋ค. script ํ๊ทธ์ type="module" ์ดํธ๋ฆฌ๋ทฐํธ๋ฅผ ์ถ๊ฐํ๋ฉด ๋ก๋๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ๋ชจ๋๋ก์ ๋์ํ๋ค.
<script type="module" src="app.js"></script>