๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ13

์ฝœ๋ฐฑ ํ•จ์ˆ˜(Callback) ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋น„๋™๊ธฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ callback๊ณผ promise๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค. ๋จผ์ € callback ํ•จ์ˆ˜์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ? ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ž€ ํŠน์ • ์ฝ”๋“œ์˜ ์—ฐ์‚ฐ์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ์ฝ”๋“œ์˜ ์‹คํ–‰์„ ๋ฉˆ์ถ”์ง€ ์•Š๊ณ  ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ๋จผ์ € ์‹คํ–‰ํ•˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํŠน์„ฑ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ์ˆ˜ํ–‰์‹œ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค. ์ด๋ฅผ ์œ„ํ•ด HTTP ํ†ต์‹ ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ์ด๋•Œ ๋น„๋™๊ธฐ์ฒ˜๋ฆฌ์˜ ๋ฌธ์ œ์ ์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค. ์•„๋ž˜์˜ ajax ํ†ต์‹  ์‚ฌ๋ก€๋ฅผ ํ†ตํ•ด ์•Œ์•„๋ณด์ž function getData() { var tableData; $.get('https://domain.com/products/1', function(response) { tableData = response; }).. 2022. 11. 3.
this์˜ ์šฉ๋ฒ• ํ•ต์‹ฌ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ, this์˜ ๊ฐ’์€ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•์— ์˜ํ•ด ๊ฒฐ์ •๋œ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ํ•จ์ˆ˜์˜ ์„ ์–ธํ•˜๋Š”๊ฒƒ์—์„œ ๊ฒฐ์ •๋˜๋Š”๊ฒƒ => ํด๋กœ์ € ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ ํ• ๋•Œ ๊ฒฐ์ •๋˜๋Š”๊ฒƒ => this์˜ ํ•ต์‹ฌ ํ•จ์ˆ˜ ํ˜ธ์ถœ ๋ฐฉ์‹๊ณผ this ๋ฐ”์ธ๋”ฉ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ฒฝ์šฐ ํ•จ์ˆ˜ ํ˜ธ์ถœ ๋ฐฉ์‹์— ์˜ํ•ด this์— ๋ฐ”์ธ๋”ฉํ•  ์–ด๋–ค ๊ฐ์ฒด๊ฐ€ ๋™์ ์œผ๋กœ ๊ฒฐ์ •๋œ๋‹ค. ๋‹ค์‹œ ๋งํ•ด, ํ•จ์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ this์— ๋ฐ”์ธ๋”ฉํ•  ๊ฐ์ฒด๊ฐ€ ์ •์ ์œผ๋กœ ๊ฒฐ์ •๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ณ , ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ํ•จ์ˆ˜๊ฐ€ ์–ด๋–ป๊ฒŒ ํ˜ธ์ถœ๋˜์—ˆ๋Š”์ง€์— ๋”ฐ๋ผ this์— ๋ฐ”์ธ๋”ฉํ•  ๊ฐ์ฒด๊ฐ€ ๋™์ ์œผ๋กœ ๊ฒฐ์ •๋œ๋‹ค. ๐Ÿ‘‰ ๋ฐ”์ธ๋”ฉ์ด๋ž€? ์‹๋ณ„์ž์™€ ๊ฐ’์„ ์—ฐ๊ฒฐํ•˜๋Š” ๊ณผ์ •์„ ๋งํ•œ๋‹ค.๋ณ€์ˆ˜์„ ์–ธ์€ ๋ณ€์ˆ˜ ์ด๋ฆ„๊ณผ ํ™•๋ณด๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์˜ ์ฃผ์†Œ๋ฅผ ๋ฐ”์ธ๋”ฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.this ๋ฐ”์ธ๋”ฉ์€ this(ํ‚ค์›Œ๋“œ๋กœ ๋ถ„๋ฅ˜๋˜์ง€๋งŒ ์‹๋ณ„์ž์˜ ์—ญํ• ์„ ํ•œ๋‹ค.)์™€ this๊ฐ€ .. 2022. 10. 27.
Closure ํด๋กœ์ € ๐Ÿ’กํด๋กœ์ €๋ž€ ํด๋กœ์ €๋Š” ์ฃผ๋ณ€์˜ ์ƒํƒœ (lexical environment)์˜ ์ฐธ์กฐ์™€ ํ•จ๊ป˜ ๋ฒˆ๋“ค๋กœ ๋ฌถ์ธ ํ•จ์ˆ˜์˜ ์กฐํ•ฉ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ํด๋กœ์ ธ๋Š” ์šฐ๋ฆฌ์—๊ฒŒ innerํ•จ์ˆ˜์—์„œ outerํ•จ์ˆ˜์˜ ์Šค์ฝ”ํ”„์— ์ ‘๊ทผ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ํด๋กœ์ €๋Š” ํ•จ์ˆ˜๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ๋งˆ๋‹ค ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” ํด๋กœ์ €๋ฅผ ์„ค๋ช…ํ•˜๋Š” ์—ฌ๋Ÿฌ ๋ฌธ์„œ์—์„œ ์ฐธ๊ณ ํ•œ ๊ฒƒ์ด๋‹ค. ํ•จ์ˆ˜์™€ ํ•จ์ˆ˜๊ฐ€ ์„ ์–ธ๋œ ์–ดํœ˜์ (lexical) ํ™˜๊ฒฝ์˜ ์กฐํ•ฉ ํด๋กœ์ €๋Š” ํ•จ์ˆ˜๋ฅผ ์ง€์นญํ•˜๊ณ  ๋˜ ๊ทธ ํ•จ์ˆ˜๊ฐ€ ์„ ์–ธ๋œ ํ™˜๊ฒฝ๊ณผ์˜ ๊ด€๊ณ„๋ผ๋Š” ๊ฐœ๋…์ด ํ•ฉ์ณ์ง„๊ฒƒ์ด๋‹ค. ํด๋กœ์ €์˜ ํ•ต์‹ฌ์€ ์Šค์ฝ”ํ”„๋ฅผ ์ด์šฉํ•ด์„œ, ๋ณ€์ˆ˜์˜ ์ ‘๊ทผ ๋ฒ”์œ„๋ฅผ ๋‹ซ๋Š”(ํ์‡„)๊ฒƒ์— ์žˆ๋‹ค. ์™ธ๋ถ€ํ•จ์ˆ˜ ์Šค์ฝ”ํ”„์—์„œ ๋‚ด๋ถ€ํ•จ์ˆ˜ ์Šค์ฝ”ํ”„๋กœ ์ ‘๊ทผ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ๋‚ด๋ถ€ํ•จ์ˆ˜์—์„œ๋Š” ์™ธ๋ถ€ํ•จ์ˆ˜ ์Šค์ฝ”ํ”„์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜์— ์ ‘๊ทผ ๊ธฐ๋Šฅํ•˜๋‹ค. ๋”ฐ๋ผ์„œ ๋‚ด๋ถ€ ํ•จ์ˆ˜๋Š” ์™ธ๋ถ€ํ•จ์ˆ˜์— ์„ ์–ธ๋œ ๋ณ€์ˆ˜์— .. 2022. 10. 23.
ํ˜ธ์ด์ŠคํŒ…์ด๋ž€? ํ˜ธ์ด์ŠคํŒ…(Hoisting)ํ˜ธ์ด์ŠคํŒ…์€ ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜ ์„ ์–ธ์„ ํ•จ์ˆ˜ ์œ ํšจ ๋ฒ”์œ„(๋˜๋Š” ํ•จ์ˆ˜ ์™ธ๋ถ€์˜ ๊ฒฝ์šฐ ์ „์—ญ ๋ฒ”์œ„)๊ฐ€ JS ์—”์ง„์—์˜ํ•ด๋งจ ์œ„๋กœ ์ด๋™ํ•˜๋Š” ํ˜„์ƒ์„ ๋งํ•œ๋‹ค. ( ๐Ÿธ : ์ด๋ ‡๊ฒŒ ๋งํ•˜๋ฉด ์‰ฌ์šด ๋ฌธ์žฅ ๊ฐ™์œผ๋ฉด์„œ๋„ ์–ด๋ ค์šด๊ฑฐ ์•Œ์•„์š” ์ €๋„ ๊ทธ๋žฌ์œผ๋‹ˆ๊นŒ ์ฒœ์ฒœํžˆ ์ฝ์œผ๋ฉด์„œ ๋‚ด๋ ค๊ฐ€๋ณด๋ฉด ์กฐ๊ธˆ์”ฉ ์ดํ•ด๋ ๊ฒ๋‹ˆ๋‹ค..! ) JavaScript ์—”์ง„์€ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ์ฝ”๋“œ๋ฅผ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๊ณ  ๊ตฌ๋ฌธ ๋ถ„์„ ๋‹จ๊ณ„ ์ค‘์— ๋ชจ๋“  ๋ณ€์ˆ˜ ๋ฐ ํ•จ์ˆ˜ ์„ ์–ธ ์„ ๋ฒ”์œ„์˜ ๋งจ ์œ„๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. JS ์—”์ง„์˜ ์ด๋Ÿฌํ•œ ๋™์ž‘์„ ํ˜ธ์ด์ŠคํŒ…( hoisting)์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.์ด๋ฅผ ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” TDZ์™€ ๋ณ€์ˆ˜์˜ ์ƒ์„ฑ ๋‹จ๊ณ„์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ํ•„์š”ํ•˜๋‹ค.TDZTDZ(Temporal Dead Zone)  ์ง์—ญ์‹œ ์ผ์‹œ์ ์ธ ์‚ฌ๊ฐ์ง€๋Œ€๋ž€ ๋œป์ด๋‹ค.์ด ์ผ์‹œ์ ์ธ ์‚ฌ๊ฐ์ง€๋Œ€๋Š” ์Šค์ฝ”ํ”„์˜ ์‹œ์ž‘ ์ง€์ ๋ถ€ํ„ฐ.. 2022. 10. 22.