Home Closure์— ๋Œ€ํ•ด์„œ
Post
Cancel

Closure์— ๋Œ€ํ•ด์„œ

๐Ÿช‚๊ฐœ์š”

ํด๋กœ์ €๋ž€ ๊ฐœ๋…์€ ์•Œ๊ณ ๋Š” ์žˆ์—ˆ์ง€๋งŒ ๋ฉด์ ‘์ด๋‚˜ ๋‹ค๋ฅธ์‚ฌ๋žŒ์—๊ฒŒ ์„ค๋ช…ํ•  ๋•Œ ๋ง์„ ๋ชปํ–ˆ๋˜ ๊ฒฝํ—˜์ด ๋งŽ์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜๋งŒ์˜ ์–ธ์–ด๋กœ ๊ธ€์„ ์“ฐ๊ณ  ์ •๋ฆฌํ•ด๋ณด๊ณ  ์‹ถ์–ด ์ด๋ฒˆ ํฌ์ŠคํŒ…์„ ํ•˜๊ฒŒ ๋๋‹ค.

๐Ÿค”ํด๋กœ์ €๋ž€?

์ž์‹ ์˜ ๋ ‰์‹œ์ปฌ ์Šค์ฝ”ํ”„๋ฅผ ๊ธฐ์–ตํ•˜๋Š” ๋ฐ˜ํ™˜๋œ ํ•จ์ˆ˜์ด๋‹ค.

๐Ÿค”๋ ‰์‹œ์ปฌ ์Šค์ฝ”ํ”„๋ž€?

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—”์ง„์ด ํ•จ์ˆ˜๋ฅผ ์–ด๋””์„œ ์ •์˜ํ–ˆ๋Š”์ง€์— ๋”ฐ๋ผ ์ƒ์œ„ ์Šค์ฝ”ํ”„๋ฅผ ๊ฒฐ์ •ํ•˜๋Š”๊ฒƒ์ด๋‹ค.

1
2
3
4
5
6
7
8
9
10
11
12
13
// ๋ ‰์‹œ์ปฌ ์Šค์ฝ”ํ”„๋ฅผ ๋”ฐ๋ฅธ๋‹ค๋Š” ์˜ˆ์ œ 1
const x = 1;

function foo() {
  const x = 10;
  bar();
}

function bar() {
  console.log(x);
}

foo(); // 1

foo์—์„œ 10์œผ๋กœ ์ดˆ๊ธฐํ™”๋œ ๋ณ€์ˆ˜ x๋ฅผ bar์—์„œ ์ถœ๋ ฅํ•˜์ง€ ์•Š์€ ์ด์œ  ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. bar๋Š” ์ „์—ญ์Šค์ฝ”ํ”„์— ์„ ์–ธ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— x๋ฅผ ํ˜ธ์ถœํ–ˆ์„ ๋•Œ ์ „์—ญ์— ์„ ์–ธ๋œ x๊ฐ€ 1๋กœ ์ดˆ๊ธฐํ™”๋˜์–ด ์žˆ๊ธฐ์— ํ˜ธ์ถœํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค. ์ฆ‰, barํ•จ์ˆ˜์˜ ๋ ‰์‹œ์ปฌ ์Šค์ฝ”ํ”„๋Š” ์ „์—ญ์ด๋‹ค.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// ๋ ‰์‹œ์ปฌ ์Šค์ฝ”ํ”„๋ฅผ ๋”ฐ๋ฅธ๋‹ค๋Š” ์˜ˆ์ œ 2
const x = 1;

function foo() {
  const x = 10;

  function bar() {
    console.log(x);
  }

  bar();
}

foo(); // 10

1๋ฒˆ ์˜ˆ์ œ์™€ ๋น„์Šทํ•˜์ง€๋งŒ ์ฐจ์ด์ ์€ barํ•จ์ˆ˜๋ฅผ ์ „์—ญ์ด ์•„๋‹Œ foo๋‚ด๋ถ€์—์„œ ์„ ์–ธํ•œ ๊ฒƒ์ด๋‹ค. barํ•จ์ˆ˜๋Š” ์ž์‹ ์˜ ์ƒ์œ„ ์Šค์ฝ”ํ”„๊ฐ€ foo์ด๊ธฐ ๋•Œ๋ฌธ์— ์ž์‹ ์˜ ๋ ‰์‹œ์ปฌํ™˜๊ฒฝ์— x๊ฐ’์ด 10์œผ๋กœ ์„ ์–ธ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— 1๋ฒˆ ์˜ˆ์ œ์™€ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ฆ‰, barํ•จ์ˆ˜์˜ ๋ ‰์‹œ์ปฌ ์Šค์ฝ”ํ”„๋Š” fooํ•จ์ˆ˜์ด๋‹ค.

๐Ÿค”ํด๋กœ์ €์˜ ๋ ‰์‹œ์ปฌ ์Šค์ฝ”ํ”„๋Š” ์†Œ๋ฉธํ•˜๋Š”๊ฐ€?

์ž์‹ ์˜ ๋ ‰์‹œ์ปฌ ์Šค์ฝ”ํ”„์˜ ์‹คํ–‰์ปจํ…์ŠคํŠธ๋Š” ์‹คํ–‰์ปจํ…์ŠคํŠธ์—์„œ ์ œ๊ฑฐ๊ฐ€ ๋˜์ง€๋งŒ, ํด๋กœ์ €์˜ ๊ธฐ๋ณธ ๋™์ž‘์›๋ฆฌ์ธ ๋ ‰์‹œ์ปฌ์Šค์ฝ”ํ”„๋ฅผ ์ฐธ์กฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ ‰์‹œ์ปฌํ™˜๊ฒฝ์€ ์‚ฌ๋ผ์ง€์ง€ ์•Š๋Š”๋‹ค. ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ๊นŒ์ง€ ์‚ฌ๋ผ์ง€๋ ค๋ฉด ๋” ์ด์ƒ ํด๋กœ์ €๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„ ๊ฐ€๋น„์ง€์ปฌ๋ ‰ํ„ฐ์— ๋“ค์–ด๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ๊ฐ€ ์ด๋ค„์ ธ์•ผ ๋œ๋‹ค.

๐Ÿšซํด๋กœ์ €๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ

  • ๋ชจ๋˜ ๋ธŒ๋ผ์šฐ์ €์˜ ์ตœ์ ํ™”๋ฅผ ํ†ตํ•ด ์ƒ์œ„ ์Šค์ฝ”ํ”„์˜ ์–ด๋–ค ์‹๋ณ„์ž๋„ ๊ธฐ์–ตํ•˜์ง€ ์•Š๋‹ค๋ฉด ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•ด์ œํ•จ
  • ์ค‘์ฒฉํ•จ์ˆ˜๋กœ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์™ธ๋ถ€ํ•จ์ˆ˜๋ณด๋‹ค ์ƒ๋ช…์ฃผ๊ธฐ๊ฐ€ ์งง๊ธฐ ๋•Œ๋ฌธ์— ์•„๋‹˜

โœ…์ค‘์ฒฉํ•จ์ˆ˜๋กœ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์ƒ์œ„ ์Šค์ฝ”ํ”„์˜ ๋ชจ๋“  ๋ณ€์ˆ˜๊ฐ€ ์•„๋‹Œ ๋ถ€๋ถ„๋งŒ ๊ธฐ์–ตํ•œ๋‹ค๋ฉด?

๋ธŒ๋ผ์šฐ์ € ์—”์ง„ ์ตœ์ ํ™”๋กœ ์ธํ•ด ์ƒ์œ„ ๋ ‰์‹œ์ปฌํ™˜๊ฒฝ์— ์ฐธ์กฐ๋˜์–ด ์žˆ๋Š” ๋ณ€์ˆ˜๋งŒ ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— ์ƒ์œ„ ๋ ‰์‹œ์ปฌํ™˜๊ฒฝ์€ ์ฐธ์กฐ๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜๋Š” ๊ธฐ์–ตํ•˜์ง€ ์•Š๋Š”๋‹ค.

๐Ÿšจํด๋กœ์ € ์‚ฌ์šฉ์ด์œ 

์ƒํƒœ๊ฐ€ ์˜๋„์น˜ ์•Š๊ฒŒ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋„๋ก ์€๋‹‰ํ•˜๊ณ  ํŠน์ • ํ•จ์ˆ˜์—๊ฒŒ๋ฉ”๋‚˜ ์ƒํƒœ ๋ณ€๊ฒฝ์„ ํ—ˆ์šฉํ•˜์—ฌ ์ƒํƒœ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณ€๊ฒฝํ•˜๊ณ  ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

๐Ÿ™„๋Š๋‚€์ 

ํด๋กœ์ €๋ผ๋Š” ๊ฐœ๋…์„ ๊นŠ๊ฒŒ ํŒ” ์ˆ˜๋ก ์–ด๋ ค์šด ๊ฑฐ ๊ฐ™๋‹ค. ๊ธฐ์กด ํ•จ์ˆ˜ ์„ ์–ธ์‹์œผ๋กœ๋Š” ์ดํ•ด๊ฐ€ ๋์ง€๋งŒ newํ‚ค์›Œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฌธ๋ฒ•์ด๋‚˜ ์„ ์–ธ์‹์ด ์•„๋‹Œ ๋ฌธ๋ฒ•๋“ค์— ๋Œ€ํ•ด์„œ๋Š” ์•„์ง ์ดํ•ดํ•˜๊ธฐ๋Š” ์–ด๋ ค์šด ๊ฑฐ ๊ฐ™๋‹ค. ๋”ฅ๋‹ค์ด๋ธŒ์—์„œ ํด๋กœ์ €์— ๋Œ€ํ•ด ๋งŽ์ด ์ฝ์–ด๋ณด๊ณ  ์–ด๋””์„œ ํ™œ์šฉํ•˜๋Š”์ง€ ๊ณ ๋ฏผํ•ด ๋ณด๋Š” ํ•™์Šต์ด ํ•„์š”ํ•  ๊ฑฐ ๊ฐ™๋‹ค.

ํ•ด๋‹น๊ธ€์€ ์•ž์œผ๋กœ ํ•™์Šตํ•˜๋ฉด์„œ ์—…๋ฐ์ดํŠธ ๋  ์˜ˆ์ •!

์ฐธ์กฐ

๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ Deep Dive

-- Missing configuration options! --

3์ฃผ์ฐจ - ๊ฒ€์ƒ‰์–ด ์ถ”์ฒœ ๊ตฌํ˜„

๋ฐฑ์ค€ - ๊ฒฝ๋น„์›