[JavaScript] ํด๋กœ์ €

ํด๋กœ์ €(closure)๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ณ ์œ ์˜ ๊ฐœ๋…์ด ์•„๋‹Œ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ค‘์š”ํ•œ ํŠน์„ฑ์œผ๋กœ MDN์—์„œ๋Š” ํด๋กœ์ €๋ฅผ "ํ•จ์ˆ˜์™€ ๊ทธ ํ•จ์ˆ˜๊ฐ€ ์„ ์–ธ๋œ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ๊ณผ์˜ ์กฐํ•ฉ"์ด๋ผ๊ณ  ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํด๋กœ์ €๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„  ํ•จ์ˆ˜๊ฐ€ ์„ ์–ธ๋œ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์— ๋Œ€ํ•ด ์•Œ์•„์•ผํ•ฉ๋‹ˆ๋‹ค. ๋ ‰์‹œ์ปฌ ์Šค์ฝ”ํ”„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ํ•จ์ˆ˜๋ฅผ ์–ด๋””์„œ ์ •์˜ํ–ˆ๋Š”์ง€์— ๋”ฐ๋ผ ์ƒ์œ„ ์Šค์ฝ”ํ”„์ธ ๋ ‰์‹œ์ปฌ ์Šค์ฝ”ํ”„(์ •์  ์Šค์ฝ”ํ”„)๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. const x = 1; function foo () { const x = 10; bar(); } function bar () { console.log(X); } foo(); // 1 bar(); // 1 ์œ„ ์˜ˆ์ œ์˜ foo ํ•จ์ˆ˜์™€ bar ํ•จ์ˆ˜๋Š” ๋ชจ๋“œ ์ „์—ญ์—์„œ ์ •์˜๋œ ์ „์—ญ ํ•จ์ˆ˜๋กœ foo ํ•จ์ˆ˜์™€ bar ํ•จ์ˆ˜ ๋ชจ๋‘ ..