Closure

ยท IT/React
useStateconst [state, setState] = useState(initialState)useState๋Š” ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ๋น„๊ตฌ์กฐํ™” ํ• ๋‹น์„ ํ†ตํ•ด state, setState๋ฅผ ์ถ”์ถœํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด useState๋Š” ์–ด๋””์„œ ์˜ค๋Š” ๊ฒƒ์ผ๊นŒ? ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ๋Š” ๋ Œ๋”๋ง์ด ๋ฐœ์ƒํ•˜๋ฉด ํ•จ์ˆ˜ ์ž์ฒด๊ฐ€ ๋‹ค์‹œ ํ˜ธ์ถœ๋œ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•จ์ˆ˜๊ฐ€ ๋‹ค์‹œ ํ˜ธ์ถœ๋˜์—ˆ์„ ๋•Œ ์ด์ „์˜ ์ƒํƒœ๊ฐ’์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ธ๊ฐ€?๋ฐ”๋กœ! useState๋Š” closure๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด์ „์˜ ์ƒํƒœ๊ฐ’์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค!๊ทธ๋ ‡๋‹ค๋ฉด closure๋ž€ ๋ฌด์—‡์ธ๊ฐ€? ์ด์— ๋Œ€ํ•ด ๋จผ์ € ํ™•์ธํ•ด ๋ณด์ž! closure๋ž€?mdn์— ๋”ฐ๋ฅด๋ฉด ํ•จ์ˆ˜์™€ ๊ทธ ์ฃผ๋ณ€ ์ƒํƒœ(lexical environment, ํ•จ์ˆ˜๊ฐ€ ์ •์˜๋  ๋•Œ ์ฃผ๋ณ€์˜ ์Šค์ฝ”ํ”„์™€ ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜..
๊ต์ˆ˜๋‹˜์ด ์—ด์‹ฌํžˆ ํด๋กœ์ € ํ•จ์ˆ˜ ๊ฐ•์˜ํ•ด์ฃผ์‹œ๋˜ ๊ฑด ๊ธฐ์–ต์ด ๋‚˜์ง€๋งŒ (์‹œํ—˜ ๋ฌธ์ œ์—๋„ ๋‚˜์™”๋˜ ๊ฑฐ ๊ฐ™๋‹ค) ๋ฌด์Šจ ๋‚ด์šฉ์ธ์ง€๋Š” ๊ฐ€๋ฌผ๊ฐ€๋ฌผํ•˜๋‹ค.. ์˜ค๋Š˜์€ ํด๋กœ์ € ํ•จ์ˆ˜์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ๋‹ค! ํด๋กœ์ €(Closure)๋ž€? MDN์— ๋”ฐ๋ฅด๋ฉด ํด๋กœ์ €๋Š” ํ•จ์ˆ˜์™€ ํ•จ์ˆ˜๊ฐ€ ์„ ์–ธ๋œ ์–ดํœ˜์  ํ™˜๊ฒฝ(lexical environment)์˜ ์กฐํ•ฉ์ด๋‹ค. ์ฆ‰, ํด๋กœ์ €๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‚ด๋ถ€ ํ•จ์ˆ˜์—์„œ ์™ธ๋ถ€ ํ•จ์ˆ˜์˜ ์Šค์ฝ”ํ”„์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. ํด๋กœ์ €๋ฅผ ์ดํ•ดํ•˜๋ ค๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ณ€์ˆ˜์˜ ์œ ํšจ ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•˜๋Š”์ง€(Lexical scoping)๋ฅผ ๋จผ์ € ์ดํ•ดํ•ด์•ผ ํ•œ๋‹ค. Lexical scoping์— ๋Œ€ํ•ด์„œ ๋จผ์ € ์•Œ์•„๋ณด์ž ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” Lexical Scope๋ฅผ ๋”ฐ๋ฅธ๋‹ค! (๋ฐ˜๋Œ€๋˜๋Š” ๊ฒƒ์€ Dynamic Scope) Lexical Scope๋Š” ํ•จ์ˆ˜์™€ ๋ณ€์ˆ˜์˜ scope๋ฅผ ์ •์˜๋œ ์œ„์น˜..
์†”B
'Closure' ํƒœ๊ทธ์˜ ๊ธ€ ๋ชฉ๋ก