22.08.22 ์์ ์ ํตํด ๊ณต๋ถํ ๋ด์ฉ๋ค์ ์ ๋ฆฌํ์์ต๋๋ค ๐
ํผ๋๋ฐฑ์ ์ธ์ ๋ ํ์์ ๋๋ค! ๐
์คํ์ปจํ ์คํธ๋ฅผ ์ดํดํ๋ค๋ฉด ์ง๊ธ๊น์ง ๋ฐฐ์ด ๊ฒ๋ค์ ์ดํดํด์ผํจ.
์๋ณ์๋ค์ด ์ด๋ป๊ฒ ๊ด๋ฆฌ๊ฐ ๋๋์ง, ์ฌํ ๋น์ด ๋๋์ง ๋ฑ๋ฑ
๊ธฐ๋ณธ์ ์ผ๋ก ํด๋ก์ ๋ฅผ ์ดํดํ๊ธฐ ์ํด์ ์คํ ์ปจํ ์คํธ๋ฅผ ์์์ผ ํจ.
์คํ ์ปจํ ์คํธ๋ ํ๊ฐ ๋จ๊ณ์์ ๋ง๋ค์ด์ง โ why? ์๋ณ์๊ฐ ํ๊ฐ ๋จ๊ณ์์ ๋ง๋ค์ด์ง๊ธฐ ๋๋ฌธ์
์ ์ญ ์คํ ์ปจํ ์คํธ โ ์คํ
ํ์ฌ ์คํ ์ปจํ ์คํธ? ํ์ฌ ์ง๊ธ ๋ญ ํ๊ณ ์๋๋์ ๋ํ ์ ๋ณด์!
์คํ ์ปจํธ๋กค์ด ์ฎ๊ฒจ์ก๋ค? โ ์คํ ์ปจํ ์คํธ ์คํ์ ์์ธ๋ค๋ ์ด์ผ๊ธฐ์!
์ด๋ฒคํธ ํธ๋ค๋ฌ๋ ํด๋ก์ ์ฒ๋ผ ๋ณด์ด๋๋ฐ,
ํด๋ฆญ์ด ๋์์ ๋ (โ ์คํ์ปจํ ์คํธ ์คํ์ด ๋น์ด์์ ๋๋ฅผ ์๋ฏธํจ) ์คํ์ด ๋จ.
= ์ด๋ฒคํธ ํธ๋ค๋ฌ ๋ด๋ถ์์ ์์ ์ค์ฝํ๋ฅผ ๋ฐ๋ผ๋ดค์ ๋ ์๋์์ผ ํ๋๋ฐ, ์ด๊ฒ ํด๋ก์ ์ด๊ธฐ ๋๋ฌธ์ ๊ทธ๋ฐ ๊ฒ์
์ด ๋ํ, ์คํ ์ปจํ ์คํธ ์คํํ๊ณ ๊ด๋ จ์ด ์์!
์ธ๋ถํจ์๊ฐ ๋ด๋ถํจ์๋ฅผ ๋ฆฌํดํ๋ฉด, ๋ด๋ถ ํจ์๊ฐ ์ด์์๊ฒ ๋๋ค!
const foo = (() => {
let x = 1;
return function () {
console.log(x);
};
})();
foo(); // 1
mdn ํด๋ก์ ์ ์๊ฐ ๊ต์ฅํ ์ข์๋ฐ,
๐ค ํด๋ก์ ๋ ํจ์์ ํจ์๊ฐ ์ ์ธ๋ ์ดํ์ ํ๊ฒฝ์ ์กฐํฉ์ด๋ค.
์ํ๋ฅผ ์์ ํ๊ฒ ์ ์งํ๊ณ , ๋ณ๊ฒฝํ๊ธฐ ์ํด์ ์ฌ์ฉํจ.
์ ์ญ ๋ณ์๋ ์ํํจ โ ์๋์น ์๊ฒ ๋ณ๊ฒฝ๋ ์ ์๋ ๊ฐ๋ฅ์ฑ์ด ๋งค์ฐ ๋์!
์บก์ํ๋ ํ๋กํผํฐ, ๋ฉ์๋๋ฅผ ํ ๊ณณ์ผ๋ก ๋ชจ์๋์๊ณ ํ๋ ๊ฒ์.
์บก์ํ์ ์ ๋ณด์๋์ ๋ค๋ฅธ ๊ฐ๋ ์.
์ ๋ณด์๋์ ํ์ง ์์์ ๋, ์ ์ฝ๋๋ฅผ ๋ค๋ฅธ ๊ณณ์์ ์ธ ์ ์์
์ ๋ณด์๋ โ ์ ๋ณด : ์ธ๋ถ์ ๊ณต๊ฐํ ํ์๊ฐ ์๋ ๊ฒ๋ง ๊ณต๊ฐํ๋ฉด ๋จ. ์ ๋ณด๋ฅผ ์ต๋ํ ์ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ด ์ข์ ๊ฒ์!
๊ฐ์ถ๊ธฐ ์ํ ๊ฐ์ฅ ์ฌํํ ๋ฐฉ๋ฒ์ด private์ผ๋ก ๊ฐ์ถ๋ ๊ฒ์ธ๋ฐ, ๊ทธ๊ฒ ์๋๋ฉด closure๋ก ๋ฌถ์.
๊ทธ๋ ๋ค๋ฉด,, ์ธ์คํด์ค๋ฅผ ์ฌ๋ฌ๊ฐ ๋ง๋๋ ์ํฉ์์ ์ ๋ณด์๋์ ํ๋ ค๋ฉด ๋ญ ์จ์ผํ๋..?
โ ํด๋์ค์ private์ ์จ์ผํ๋ ์ ๋ฐ์ ์์.