๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“’ JavaScript

"ํด๋กœ์ €๊ฐ€ ๋ญ์—์š”?" ๋ฅผ ๋‹ตํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.

by Tamii 2022. 6. 23.
๋ฐ˜์‘ํ˜•

ํด๋กœ์ €๊ฐ€ ๋ญ์—์š”?

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

 

 

 

 

ํด๋กœ์ €

 

์–ด๋–ค ํ•จ์ˆ˜์—์„œ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋‚ด๋ถ€ ํ•จ์ˆ˜๋ฅผ ์™ธ๋ถ€๋กœ ์ „๋‹ฌํ•  ๊ฒฝ์šฐ,

(์™ธ๋ถ€)ํ•จ์ˆ˜์˜ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๊ฐ€ ์ข…๋ฃŒ๋œ ํ›„์—๋„ ํ•ด๋‹น ๋ณ€์ˆ˜๊ฐ€ ์‚ฌ๋ผ์ง€์ง€ ์•Š๋Š” ํ˜„์ƒ 

 

var outer = function () {
	var a= 1;
    var inner= function() {
    	return ++a;
    }
    
    return inner; // - 1. ๊ฐ’์ด ์•„๋‹Œ ํ•จ์ˆ˜ ์ž์ฒด๋ฅผ ์ „๋‹ฌ
    
}

var outer2 = outer(); // - 2. fooํ•จ์ˆ˜์˜ ์‹คํ–‰์ปจํ…์ŠคํŠธ ์ข…๋ฃŒ
console.log(outer2()); // 2 - 3. ์•ž์„œ ๋ฐ˜ํ™˜ ๋œ inner๊ฐ€ ์‹คํ–‰๋จ
console.log(outer2()); // 3
  1. foo๋Š” ํ•จ์ˆ˜์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๊ฐ€ ์•„๋‹Œ ํ•จ์ˆ˜ ์ž์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•จ (inner)
  2. fooํ•จ์ˆ˜์˜ ์‹คํ–‰์ปจํ…์ŠคํŠธ๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ์Œ์—๋„
  3. ์•ž์„œ ๋ฐ˜ํ™˜๋œ innerํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋จ 

 

๊ทธ ์ด์œ ๋Š”?

innerํ•จ์ˆ˜๋Š” ๋‚ด๋ถ€์—์„œ ์„ ์–ธ๋˜์—ˆ์Œ : outerํ•จ์ˆ˜์˜๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์— ๋‹ด๊น€

์Šค์ฝ”ํ”„ ์ฒด์ด๋‹์— ๋”ฐ๋ผ outer์—์„œ ์„ ์–ธํ•œ ๋ณ€์ˆ˜ a์— ์ ‘๊ทผํ•˜๊ฒŒ ๋จ

 

๊ทผ๋ฐ ์–ด๋–ป๊ฒŒ ์ ‘๊ทผํ•˜๋Š” ๊ฑฐ์—์š”?

๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ์˜ ๋™์ž‘ ๋ฐฉ์‹ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๋Š” ์–ด๋–ค ๊ฐ’์„ ์ฐธ์กฐํ•˜๋Š” ๋ณ€์ˆ˜๊ฐ€ ํ•˜๋‚˜๋ผ๋„ ์žˆ์œผ๋ฉด ๊ทธ ๊ฐ’์€ ์ˆ˜์ง‘ ๋Œ€์ƒ์— ํฌํ•จํ•˜์ง€ ์•Š์Œ 

 

๋”ฐ๋ผ์„œ outer ํ•จ์ˆ˜์˜ ์‹คํ–‰์ด ์ข…๋ฃŒ๋˜๋”๋ผ๋„ ๋‚ด๋ถ€ ํ•จ์ˆ˜์ธ inner ๋กœ ์ธํ•ด a๋ฅผ ํ˜ธ์ถœํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์ž‡๊ณ 

๊ฐ€๋น„์ง€ ์ปฌ๋ ›ํ„ฐ๋Š” ์ด ๊ฐ’์„ ์ˆ˜์ง‘ํ•˜์ง€ ์•Š๋Š”๋‹ค

 

 

 

ํด๋กœ์ €์˜ ๋‹ค์–‘ํ•œ ์ •์˜

 

ํ•จ์ˆ˜์—์„œ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋ฅผ  ๋‚ด๋ถ€ ํ•จ์ˆ˜์—์„œ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ๋ฐœ์ƒํ•˜๋Š” ํ˜„์ƒ์œผ๋กœ,

์™ธ๋ถ€ ํ•จ์ˆ˜์˜ ์ƒ๋ช…์ฃผ๊ธฐ๊ฐ€ ์ข…๋ฃŒ๋˜๋”๋ผ๋„, ์Šค์ฝ”ํ”„ ์ฒด์ธ์— ์˜ํ•ด ํ•ด๋‹น ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

ํ•จ์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ ๋งŒ๋“ค์–ด์ง€๋Š” ์œ ํšจ๋ฒ”์œ„๊ฐ€ ์‚ฌ๋ผ์ง„ ํ›„์—๋„ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜ - < ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋‹Œ์ž ๋น„๊ธ‰> , ์กด๋ ˆ์‹

์ด๋ฏธ ์ƒ๋ช…์ฃผ๊ธฐ๊ฐ€ ๋๋‚œ ์™ธ๋ถ€ ํ•จ์ˆ˜์˜ ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•˜๋Š” ํ•จ์ˆ˜ - < ์ธ์‚ฌ์ด๋“œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ >, ์†กํ˜•์ฃผ ๊ณ ํ˜„์ค€

์ž์‹ ์ด ์ƒ์„ฑ๋  ๋•Œ์˜ ์Šค์ฝ”ํ”„์—์„œ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋˜ ๋ณ€์ˆ˜๋“ค ์ค‘ ์–ธ์  ๊ฐ€ ์ž์‹ ์ด ์‹คํ–‰๋  ๋•Œ ์‚ฌ์šฉํ•  ๋ณ€์ˆ˜๋งŒ์„ ๊ธฐ์–ตํ•˜์—ฌ ์œ ์ง€์‹œํ‚ค๋Š” ํ•จ์ˆ˜ - < ํ•จ์ˆ˜ํ˜• ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ >, ์œ ์ธ๋™

 

 

 

 

 

-  ํ•ด๋‹น ๋‚ด์šฉ์€ ์ฝ”์–ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋‚ด์šฉ์„ ์ฐธ์กฐํ–ˆ์Šต๋‹ˆ๋‹ค. -

๋Œ“๊ธ€