๐ŸŒŸ ์ž์ฃผ ๋“ฑ์žฅํ•˜๋Š” ํ”„๋ก ํŠธ์—”๋“œ ๊ธฐ์ˆ  ๋ฉด์ ‘ ์งˆ๋ฌธ ์ •๋ฆฌ [JSํŽธ]

์„œ๋กœยท2025๋…„ 1์›” 12์ผ
2

JS

๋ชฉ๋ก ๋ณด๊ธฐ
14/15
post-thumbnail

๐Ÿ’ฌ ๋™๊ธฐ์™€ ๋น„๋™๊ธฐ์˜ ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

๋™๊ธฐ๋Š” ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ์ฝ”๋“œ๊ฐ€ ์™„๋ฃŒ๋œ ํ›„์—์•ผ ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

๋น„๋™๊ธฐ๋Š” ์ด์™€ ๋ฐ˜๋Œ€๋กœ ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ์ฝ”๋“œ์˜ ์™„๋ฃŒ ์—ฌ๋ถ€์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

์›น ์•ฑ์—์„œ๋Š” ์„œ๋ฒ„์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์š”์ฒญํ•œ ๋‹ค์Œ,
์‚ฌ์šฉ์ž์˜ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๋ฉˆ์ถ”์ง€ ์•Š๋„๋ก ํ•˜๊ณ  ๋™์‹œ์— ์—ฌ๋Ÿฌ ์ž‘์—…์„ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’ฌ ์ฝœ๋ฐฑ ํ•จ์ˆ˜์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ž€ ๋‹ค๋ฅธ ์ฝ”๋“œ์˜ ์ธ์ž๋กœ ๋„˜๊ฒจ์ฃผ๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.
    
์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ์ธ์ž๋กœ ๋„˜๊ฒจ์คŒ์œผ๋กœ์จ ๊ทธ ์ œ์–ด๊ถŒ๋„ ํ•จ๊ป˜ ์œ„์ž„ํ•˜๋Š”๋ฐ
์—ฌ๊ธฐ์„œ ์ œ์–ด๊ถŒ์ด๋ž€ ์ฝœ๋ฐฑ ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ ์‹œ์ , ์ธ์ž, this๋ฅผ ๊ฒฐ์ •ํ•  ๊ถŒ๋ฆฌ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰์‹œ ํ˜ธ์ถœ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ํŠน์ • ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ํŠน์ • ์ž‘์—…์ด ์™„๋ฃŒ๋œ ํ›„
ํ˜ธ์ถœ๋˜๋„๋ก ์ง€์ •ํ•  ์ˆ˜ ์žˆ์–ด์„œ ๋‚˜์ค‘์— ๋ถˆ๋Ÿฌ๋‹ฌ๋ผ๋Š” ์˜๋ฏธ์—์„œ call back์ด๋ผ ๋ช…๋ช…ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๐Ÿ’ฌ ์ฝœ๋ฐฑ ์ง€์˜ฅ์˜ ์˜๋ฏธ๋ฅผ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

์ฝœ๋ฐฑ ์ง€์˜ฅ์€ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ์ต๋ช…์œผ๋กœ ์ „๋‹ฌํ•˜๋Š” ๊ณผ์ •์ด ๋ฐ˜๋ณต๋˜์–ด
์ฝ”๋“œ์˜ ๋“ค์—ฌ์“ฐ๊ธฐ ์ˆ˜์ค€์ด ๊ฐ๋‹นํ•˜๊ธฐ ํž˜๋“ค ์ •๋„๋กœ ๊นŠ์–ด์ง€๋Š” ํ˜„์ƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

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

๐Ÿ’ฌ promise์™€ callback์˜ ์ฐจ์ด๋ฅผ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

callback ํ•จ์ˆ˜๋Š” ํŠน์ • ์ž‘์—…์ด ์™„๋ฃŒ๋œ ํ›„ ํ˜ธ์ถœ๋˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.

๋น„๋™๊ธฐ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ์‹์œผ๋กœ, ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด ์ฝœ๋ฐฑ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

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

์ด๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ES6์—์„œ Promise๊ฐ€ ๋“ฑ์žฅํ•˜์˜€์Šต๋‹ˆ๋‹ค.

Promise๋Š” ๋น„๋™๊ธฐ ์ž‘์—…์˜ ์„ฑ๊ณต ๋˜๋Š” ์‹คํŒจ ์—ฌ๋ถ€๋ฅผ ์ถ”์ƒํ™”ํ•˜์—ฌ ๊ด€๋ฆฌํ•˜๋Š” ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.

์ฝœ๋ฐฑ ํ•จ์ˆ˜ ๋Œ€์‹  then, catch ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋น„๋™๊ธฐ ์ž‘์—…์ด ์™„๋ฃŒ๋œ ์ดํ›„์˜ ๊ฒฐ๊ณผ๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฅผ ํ†ตํ•ด ์ฝœ๋ฐฑ ์ง€์˜ฅ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’ฌ promise์™€ async-await์˜ ์ฐจ์ด๋ฅผ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

promise ์™€ then-catch์„ ์ด์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ๋น„๋™๊ธฐ ์ž‘์—…์„
์ฒด์ธ ํ˜•ํƒœ๋กœ ์—ฐ๊ฒฐํ•˜์—ฌ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋ณต์žกํ•œ ๋น„๋™๊ธฐ ์ž‘์—…์—์„œ ์ฒด์ธ ๊ตฌ์กฐ๊ฐ€ ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ๊ฐ€ ํž˜๋“ญ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ promise ๋ฅผ ๋” ์ง๊ด€์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ES8์—์„œ async-await ๋ฌธ๋ฒ•์ด ๋“ฑ์žฅํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๋น„๋™๊ธฐ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” ํ•จ์ˆ˜ ์•ž์— async์„ ํ‘œ๊ธฐํ•˜๊ณ ,  
ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ์‹ค์งˆ์ ์ธ ๋น„๋™๊ธฐ ์ž‘์—…์ด ํ•„์š”ํ•œ ์œ„์น˜๋งˆ๋‹ค await์„ ํ‘œ๊ธฐํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ  
๋’ค์˜ ๋‚ด์šฉ์„ ์ž๋™์œผ๋กœ promise๋กœ ์ „ํ™˜ํ•˜๊ณ , ํ•ด๋‹น ๋‚ด์šฉ์ด resolve๋œ ์ดํ›„์—์•ผ ๋‹ค์Œ์œผ๋กœ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

async-await ์€ ๋™๊ธฐ์ ์ธ ์ฝ”๋“œ ์Šคํƒ€์ผ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋ฉฐ,
try-catch ๋ฌธ์„ ํ†ตํ•ด ์—๋Ÿฌ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€ ๋ณด์ˆ˜์„ฑ์ด ๋›ฐ์–ด๋‚ฉ๋‹ˆ๋‹ค.

๐Ÿ’ฌ map๊ณผ forEach์˜ ์ฐจ์ด๋ฅผ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”. (โž•reduce)

map๊ณผ forEach ๋ชจ๋‘ ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜์—ฌ ๊ฐ ์š”์†Œ๋งˆ๋‹ค ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ map์€ ์ฝœ๋ฐฑ ํ•จ์ˆ˜์˜ return๊ฐ’์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•˜๊ณ ,
forEach๋Š” ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๊ณ  ๊ทธ์ € ์‹คํ–‰๋งŒ ํ•ฉ๋‹ˆ๋‹ค.

reduce๋Š” ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ์— ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ์ ์šฉํ•˜์—ฌ ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ ๊ฐ’์„ ์ƒ์„ฑํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.

์ธ์ˆ˜๋กœ๋Š” ๋ˆ„์  ๊ฐ’, ํ˜„์žฌ ๊ฐ’, ํ˜„์žฌ ์ธ๋ฑ์Šค ๋“ฑ์„ ๋ฐ›๋Š”๋ฐ ๋ฐฐ์—ด์˜ ์š”์†Œ๋“ค์„ ํ•˜๋‚˜๋กœ ์ค„์—ฌ(reduce) ์ง‘๊ณ„ํ•œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ฌ var, let, const์˜ ์ฐจ์ด๋ฅผ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

์žฌ์„ ์–ธ์žฌํ• ๋‹น์Šค์ฝ”ํ”„
varOOํ•จ์ˆ˜ ๋‹จ์œ„
letXO๋ธ”๋ก ๋‹จ์œ„
constXX๋ธ”๋ก ๋‹จ์œ„

๐Ÿ’ฌ ์ผ๋ฐ˜ ํ•จ์ˆ˜์™€ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜์˜ ์ฐจ์ด๋ฅผ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

์ผ๋ฐ˜ ํ•จ์ˆ˜๋Š” ๋ฉ”์„œ๋“œ๋กœ์„œ ํ˜ธ์ถœํ•˜๋ฉด ํ˜„์žฌ ๊ฐ์ฒด๋ฅผ ๋ฐ”๋ผ๋ณด๋„๋ก this ๋ฐ”์ธ๋”ฉ์„ ํ•˜๊ณ ,
ํ•จ์ˆ˜๋กœ์„œ ํ˜ธ์ถœํ•˜๋ฉด this๊ฐ€ ์ „์—ญ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋Š” ํ˜ธ์ถœํ•  ๋•Œ this ๋ฐ”์ธ๋”ฉ ๊ณผ์ • ์ž์ฒด๊ฐ€ ๋น ์ง€๊ฒŒ ๋˜์–ด์„œ
ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ ๋‚ด์—์„œ this์„ ์ถœ๋ ฅํ•˜๋ฉด ์ƒ์œ„ ์Šค์ฝ”ํ”„์˜ this๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด this๊ฐ€ ์ „์—ญ ๊ฐ์ฒด๋ฅผ ๋ฐ”๋ผ๋ณด๊ฒŒ ๋ผ์„œ ๋ฐœ์ƒํ•˜๋Š” ํ˜ผ๋ž€์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’ฌ this์˜ ์˜๋ฏธ๋ฅผ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

this๋Š” ์ž์‹ ์ด ์†ํ•œ ๊ฐ์ฒด ํ˜น์€ ์ž์‹ ์ด ์ƒ์„ฑํ•  ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ž๊ธฐ ์ฐธ์กฐ ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค.

๐Ÿ’ฌ ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ๊ณผ ํ•จ์ˆ˜ ํ‘œํ˜„์‹์˜ ์ฐจ์ด๋ฅผ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ์€ function ํ‚ค์›Œ๋“œ๋ฅผ ํ™œ์šฉํ•ด์„œ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•˜๋Š” ๋ฐฉ์‹์ด๊ณ ,
ํ•จ์ˆ˜ ํ‘œํ˜„์‹์€ ๋ณ€์ˆ˜์— ํ•จ์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด์„ ํ• ๋‹นํ•˜์—ฌ ์ •์˜ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

๋‘˜์˜ ์ฐจ์ด๋Š” ํ˜ธ์ด์ŠคํŒ… ์—ฌ๋ถ€์—์„œ ๋ช…ํ™•ํžˆ ๋“œ๋Ÿฌ๋‚ฉ๋‹ˆ๋‹ค.

ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ์€ ๋Ÿฐํƒ€์ž„ ์ด์ „์— ํ˜ธ์ด์ŠคํŒ…๋˜์–ด ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ํ•จ์ˆ˜๊ฐ€ ๋ฏธ๋ฆฌ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ํ•จ์ˆ˜ ํ‘œํ˜„์‹์€ ๋ณ€์ˆ˜๋งŒ ํ˜ธ์ด์ŠคํŒ…๋˜๊ณ  ํ•จ์ˆ˜ ์ž์ฒด๋Š” ํ˜ธ์ด์ŠคํŒ…๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—
ํ•จ์ˆ˜ ํ‘œํ˜„์‹ ๋ผ์ธ ์ด์ „์—์„œ ํ•ด๋‹น ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ฌ ํ˜ธ์ด์ŠคํŒ…์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

ํ˜ธ์ด์ŠคํŒ…์€ โ€˜๋Œ์–ด์˜ฌ๋ฆฐ๋‹คโ€™๋ผ๋Š” ์˜๋ฏธ๋กœ,
ํ•จ์ˆ˜ ํ˜น์€ ๋ณ€์ˆ˜ ์„ ์–ธ๋ฌธ์ด ์ฝ”๋“œ์˜ ์ตœ์ƒ์œ„๋กœ ๋Œ์–ด์˜ฌ๋ ค์ง€๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํ˜„์ƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์ฝ”๋“œ ์‹คํ–‰ ์ด์ „์— ํ•จ์ˆ˜์™€ ๋ณ€์ˆ˜์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๋ฏธ๋ฆฌ ํ™•๋ณดํ•ด๋‘ก๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋™์ž‘์ด ๋งˆ์น˜ ์„ ์–ธ๋ฌธ์ด ์Šค์ฝ”ํ”„์˜ ์ตœ์ƒ๋‹จ์œผ๋กœ ๋Œ์–ด์˜ฌ๋ ค์ง„ ๊ฒƒ ๊ฐ™์•„์„œ โ€˜ํ˜ธ์ด์ŠคํŒ…โ€™์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ์ด ํ˜ธ์ด์ŠคํŒ…๋  ๋•Œ ํ•จ์ˆ˜ ์ „์ฒด๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€์ง€๋งŒ,
๋ณ€์ˆ˜ ์„ ์–ธ๋ฌธ์€ ๊ฐ’์ด undefined๋กœ ์ดˆ๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค.

๐Ÿ’ฌ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋Š” ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๋Š” ์‹œ์ ์— ์ƒ์„ฑ๋˜์–ด ์ฝœ ์Šคํƒ์— ์Œ“์ž…๋‹ˆ๋‹ค.

์ด ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋Š” ํ•จ์ˆ˜์— ๋Œ€ํ•œ ํ™˜๊ฒฝ ์ •๋ณด๋ฅผ ๋‹ด์€ ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.

์‹๋ณ„์ž์— ๋Œ€ํ•œ ์ •๋ณด๋‚˜ this, ์ƒ์œ„ ์Šค์ฝ”ํ”„์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ๊ฐ–๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’ฌ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์€ ํ™˜๊ฒฝ ๋ ˆ์ฝ”๋“œ์™€ ์™ธ๋ถ€ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ ์ฐธ์กฐ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์€ ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ์ฝ”๋“œ ๋ธ”๋ก์—์„œ์˜ ์‹๋ณ„์ž ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.

ํ™˜๊ฒฝ ๋ ˆ์ฝ”๋“œ์—๋Š” ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜ ์„ ์–ธ์ด ์ €์žฅ๋˜๋ฉฐ,
์™ธ๋ถ€ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ ์ฐธ์กฐ๋ฅผ ํ†ตํ•ด ์ƒ์œ„ ์Šค์ฝ”ํ”„์™€ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ’ฌ ์Šค์ฝ”ํ”„์™€ ์Šค์ฝ”ํ”„ ์ฒด์ธ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

์Šค์ฝ”ํ”„๋ž€ ๋ณ€์ˆ˜์˜ ์œ ํšจ ๋ฒ”์œ„๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.

์–ด๋– ํ•œ ์Šค์ฝ”ํ”„ ๋‚ด์—์„œ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋Š” ์Šค์ฝ”ํ”„ ๋ฐ–์—์„œ๋Š” ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ƒ์œ„ ์Šค์ฝ”ํ”„์—์„œ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋Š” ํ•˜์œ„ ์Šค์ฝ”ํ”„์—์„œ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ,
์ด๋Š” ๋‹จ๋ฐฉํ–ฅ์œผ๋กœ ์ƒ์œ„ ์Šค์ฝ”ํ”„๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋„๋ก ์ฒด์ธ ํ˜•์‹์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๐Ÿ’ฌ ๊นŠ์€ ๋ณต์‚ฌ์™€ ์–•์€ ๋ณต์‚ฌ์˜ ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

์–ด๋– ํ•œ ๊ฐ์ฒด๋ฅผ ๋ณต์ œํ•˜๊ณ  ์‹ถ์„ ๋•Œ,
์–•์€ ๋ณต์‚ฌ์™€ ๊นŠ์€ ๋ณต์‚ฌ ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋งํ•˜์ž๋ฉด, ์–•์€ ๋ณต์‚ฌ๋ž€ ํ•œ ๋‹จ๊ณ„ ๋ฐ‘์˜ ํ”„๋กœํผํ‹ฐ๊นŒ์ง€ ๋ณต์‚ฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊นŠ์€ ๋ณต์‚ฌ๋Š” ๊ฐ์ฒด์˜ ๋ชจ๋“  ์†์„ฑ์„ ์žฌ๊ท€์ ์œผ๋กœ ๋ณต์‚ฌํ•˜์—ฌ ๋…๋ฆฝ๋œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋งŒ์•ฝ ์ค‘์ฒฉ๋œ ๊ฐ์ฒด๋ฅผ ์–•์€ ๋ณต์‚ฌํ•˜๋ฉด,
๋‚ด๋ถ€ ๊ฐ์ฒด ์ž์ฒด๋ฅผ ๋ณต์‚ฌํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ๊ทธ ์ฐธ์กฐ๋ฅผ ๋ณต์‚ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์›๋ณธ ๊ฐ์ฒด๊ฐ€ ์†์‹ค๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ค‘์ฒฉ๋œ ๊ฐ์ฒด๋ฅผ ๋ณต์‚ฌํ•  ๋•Œ๋Š” ๊นŠ์€ ๋ณต์‚ฌ๋ฅผ ํ•˜๋ฉด ์›๋ณธ ๊ฐ์ฒด๊ฐ€ ์†์‹ค๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๐Ÿ’ฌ spread ๋ฌธ๋ฒ•๊ณผ rest ๋ฌธ๋ฒ•์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

spread๋Š” ๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด๋ฅผ ํŽผ์ณ์„œ ๊ฐœ๋ณ„ ์š”์†Œ๋กœ ๋ถ„ํ•ดํ•ฉ๋‹ˆ๋‹ค.

const arr = [1, 2, 3];
console.log(...arr); // 1 2 3

rest๋Š” ์ด์™€ ๋ฐ˜๋Œ€๋กœ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ธ์ˆ˜ ํ˜น์€ ์š”์†Œ๋ฅผ ๋ฐฐ์—ด๋กœ ๋ฌถ์Šต๋‹ˆ๋‹ค.

function foo(...args) { console.log(args); }
foo(1, 2, 3); // [1, 2, 3]

๐Ÿ’ฌ ES6์—์„œ ์ƒ๊ธด ํฐ ๋ณ€ํ™”๋“ค์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

  • let, const
  • ํ™”์‚ดํ‘œ ํ•จ์ˆ˜
  • ํด๋ž˜์Šค
  • ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด
  • Promise
  • Map, Set ์ž๋ฃŒ ๊ตฌ์กฐ
  • ๋“ฑ

๐Ÿ’ฌ null, undefined์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”. (โž•undeclared)

null๊ณผ undefined ๋ชจ๋‘ ๋นˆ ๊ฐ’์„ ์˜๋ฏธํ•˜๋Š” ๊ฑด ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ null์€ ๋ณ€์ˆ˜์— ๊ฐ’์ด ์—†๋‹ค๋Š” ๊ฒƒ์„ ๋“œ๋Ÿฌ๋‚ด๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ์ž๊ฐ€ ์˜๋„์ ์œผ๋กœ ํ• ๋‹นํ•˜๋Š” ๊ฐ’์ด๋ฉฐ,
undefined๋Š” ์„ ์–ธ์ด ๋˜๊ณ  ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์ด ํ• ๋‹นํ•˜๋Š” ๊ฐ’์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋ณ€์ˆ˜์— undefined๊ฐ€ ํ• ๋‹น๋˜์–ด ์žˆ์œผ๋ฉด ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜๋ผ๋Š” ์˜๋ฏธ๊ฐ€ ๋” ๊ฐ•ํ•ฉ๋‹ˆ๋‹ค.

undeclared ๋Š” ํ•ด๋‹น ์Šค์ฝ”ํ”„ ๋‚ด์—์„œ ์ ‘๊ทผํ•˜๋ ค ํ–ˆ์œผ๋‚˜ ์„ ์–ธ์กฐ์ฐจ ๋˜์ง€ ์•Š์€ ์ƒํƒœ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ฌ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฐ์ดํ„ฐ ํƒ€์ž…์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๋กœ ๋ถ„๋ฅ˜๋ฉ๋‹ˆ๋‹ค.

  • ๊ธฐ๋ณธํ˜•
    • Number
    • String
    • Boolean
    • null
    • undefined
    • Symbol
  • ์ฐธ์กฐํ˜•
    • Array
    • Function
    • Date
    • RegExp
    • Map
    • Set

๐Ÿ’ฌ call๊ณผ apply์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

call๊ณผ apply ๋ชจ๋‘ ๋ช…์‹œ์ ์œผ๋กœ this๋ฅผ ๋ฐ”์ธ๋”ฉํ•˜๋Š” ๋ฉ”์„œ๋“œ์ž„์€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.
call๊ณผ apply๋Š” ์ธ์ž๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹๋งŒ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

  • call: ๋ฉ”์„œ๋“œ์˜ ์ฒซ ๋ฒˆ์งธ ์ธ์ž๋ฅผ this๋กœ ๋ฐ”์ธ๋”ฉํ•˜๊ณ  ๋‚˜๋จธ์ง€ ๋ชจ๋“  ์ธ์ž๋“ค์„ ํ˜ธ์ถœํ•  ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ํ•ฉ๋‹ˆ๋‹ค.
  • apply: ๋ฉ”์„œ๋“œ์˜ ์ฒซ ๋ฒˆ์งธ ์ธ์ž๋ฅผ this๋กœ ๋ฐ”์ธ๋”ฉํ•˜๊ณ  ๋‘ ๋ฒˆ์งธ ์ธ์ž๋ฅผ ๋ฐฐ์—ด๋กœ ๋ฐ›์•„ ๊ทธ ๋ฐฐ์—ด์˜ ์š”์†Œ๋“ค์„ ํ˜ธ์ถœํ•  ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ฌ function.prototype.bind์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

bind๋Š” call, apply์™€ ๋‹ฌ๋ฆฌ ์ฆ‰์‹œ ํ˜ธ์ถœํ•˜์ง€ ์•Š๊ณ  ์ „๋‹ฌ๋ฐ›์€ this์™€ ์ธ์ˆ˜๋“ค์„ ๋ฐ”ํƒ•์œผ๋กœ ์ƒˆ๋กœ์šด ํ•จ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

var func = function (a, b, c, d) {
    console.log(this, a, b, c, d);
};

var bindFunc = func.bind({ x: 1 }, 4, 5);
bindFunc(6, 7); // ์ถœ๋ ฅ: {x: 1} 4 5 6 7

๐Ÿ’ฌ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋™์  ํƒ€์ž… ์–ธ์–ด์ธ ์ด์œ ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋ณ€์ˆ˜์˜ ํƒ€์ž…์ด ๊ณ ์ •๋˜์ง€ ์•Š๊ณ  ๋Ÿฐํƒ€์ž„์— ํƒ€์ž…์ด ๊ฒฐ์ •๋˜๋ฉฐ,
์‹คํ–‰ ์ค‘์— ๋ณ€์ˆ˜์˜ ํƒ€์ž…์„ ์ž์œ ๋กญ๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ๊ฐ์ฒด์˜ ์†์„ฑ์„ ๋™์ ์œผ๋กœ ์ถ”๊ฐ€, ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’ฌ ๊ฐ์ฒด์˜ ๋ถˆ๋ณ€์„ฑ์„ ์œ ์ง€ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•˜๋‚˜์š”?

๊นŠ์€ ๋ณต์‚ฌ๋ฅผ ํ•ด์„œ ์›๋ณต ๊ฐ์ฒด์˜ ์†์‹ค์„ ๋ง‰๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ Immutable.js๋‚˜ Immer ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ณต์žกํ•œ ๋ถˆ๋ณ€์„ฑ ๊ด€๋ฆฌ๋ฅผ ๋ณด๋‹ค ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๊นŠ์€ ๋ณต์‚ฌ๋ฅผ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜,
๊ฐ์ฒด์˜ ์ƒํƒœ๋ฅผ ๋ถˆ๋ณ€ํ•˜๊ฒŒ ์œ ์ง€ํ•˜๋ฉด์„œ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ฌ ==๊ณผ ===์˜ ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

==์€ ๋‘ ํ”ผ์—ฐ์‚ฐ์ž์˜ ํƒ€์ž…์ด ๋‹ค๋ฅผ ๊ฒฝ์šฐ ์•”๋ฌต์ ์œผ๋กœ ํƒ€์ž… ๋ณ€ํ™˜ํ•ด์„œ ๊ฐ’์„ ๋น„๊ตํ•˜๊ณ ,
===์€ ํƒ€์ž…์„ ๋ณ€ํ™˜ํ•˜์ง€ ์•Š๊ณ  ๋ณด๋‹ค ๋” ์—„๊ฒฉํ•˜๊ฒŒ ๋‘ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ๋นˆ ๋ฌธ์ž์—ด์ธ โ€˜โ€™ ์™€ 0์€ ๋‘˜ ๋‹ค Falsy ๊ฐ’์ด๊ธฐ ๋•Œ๋ฌธ์— false๋กœ ์•”๋ฌต์  ํ˜• ๋ณ€ํ™˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋‘ ๊ฐ’์„ == ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด ๋น„๊ตํ•˜๋ฉด ์ฐธ์œผ๋กœ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ === ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋น„๊ตํ•˜๋ฉด ๋‘ ํ”ผ์—ฐ์‚ฐ์ž๋Š” ์—„๊ฒฉํžˆ ํƒ€์ž…์ด ๋‹ค๋ฅด๋ฏ€๋กœ false๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ’ฌ ๋™๊ธฐ ๋ฐ ๋น„๋™๊ธฐ ์ž‘์—… ์ฒ˜๋ฆฌ๋ฅผ JS์˜ ์Šค๋ ˆ๋“œ์™€ ์—ฐ๊ด€์ง€์–ด์„œ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

JavaScript๋Š” ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ๋กœ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ์ž‘์—…๋งŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โžŠ ๋™๊ธฐ

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

โž‹ ๋น„๋™๊ธฐ

์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ์—์„œ ์ด๋ฒคํŠธ ๋ฃจํ”„์™€ ์ž‘์—… ํ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

๋น„๋™๊ธฐ ์ž‘์—…์ด๋ž€, ์–ด๋–ค ์ž‘์—…์„ ๋ฐ”๋กœ ์™„๋ฃŒํ•˜์ง€ ์•Š๊ณ  ๋‚˜์ค‘์— ์™„๋ฃŒ๋  ์ž‘์—…์„ ๋ฏธ๋ฆฌ ์˜ˆ์•ฝํ•ด๋‘๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ ๋„คํŠธ์›Œํฌ ์š”์ฒญ์ด๋‚˜ ํƒ€์ด๋จธ ํ•จ์ˆ˜(setTimeout) ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

[๋น„๋™๊ธฐ ์ž‘์—…์˜ ์ฒ˜๋ฆฌ ๊ณผ์ •]

โ‘  ๋น„๋™๊ธฐ ํ•จ์ˆ˜ ํ˜ธ์ถœ
- ๋น„๋™๊ธฐ ์ž‘์—…์„ ์š”์ฒญํ•˜๋ฉด, ํ•ด๋‹น ์ž‘์—…์€ ์ฝœ ์Šคํƒ์—์„œ ๋น ์ ธ๋‚˜๊ฐ€๊ณ , ๋ธŒ๋ผ์šฐ์ € ๋˜๋Š” Node.js์˜ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
- ์ด๋•Œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์˜ ์ฝœ ์Šคํƒ์€ ๋น„์–ด์žˆ๋Š” ์ƒํƒœ๋กœ ๋‹ค์Œ ์ž‘์—…์„ ๊ณ„์† ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โ‘ก ์ž‘์—… ์™„๋ฃŒ ๋ฐ ์ฝœ๋ฐฑ
- ๋น„๋™๊ธฐ ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด, ๊ทธ ๊ฒฐ๊ณผ๋Š” ์ž‘์—… ํ(Task Queue)์— ์ฝœ๋ฐฑ ํ˜•ํƒœ๋กœ ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค.

โ‘ข ์ด๋ฒคํŠธ ๋ฃจํ”„
- ์ด๋ฒคํŠธ ๋ฃจํ”„๋Š” ์ฝœ ์Šคํƒ์ด ๋น„์–ด ์žˆ๋Š”์ง€๋ฅผ ์ง€์†์ ์œผ๋กœ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
- ์ฝœ ์Šคํƒ์ด ๋น„์–ด ์žˆ๋Š” ๊ฒฝ์šฐ, ์ž‘์—… ํ์— ์Œ“์—ฌ ์žˆ๋Š” ์ฝœ๋ฐฑ์„ ์ฝœ ์Šคํƒ์œผ๋กœ ์˜ฎ๊ฒจ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ฌ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„ ์ค‘ ํ•˜๋‚˜๋กœ,
๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ƒํ™”์‹œ์ผœ ์ƒํƒœ์™€ ํ–‰์œ„๋ฅผ ๊ฐ€์ง„ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ  ๊ทธ ๊ฐ์ฒด๋“ค ๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ํ†ตํ•ด
๋กœ์ง์„ ๊ตฌ์„ฑํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ๋ฒ•์ด๋‹ค.

โ‘  ์บก์Аํ™”: ์ •๋ณด ์€๋‹‰, ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ์ •๋ณด ์ ‘๊ทผ ์ œ์–ด
โ‘ก ์ƒ์†: ์ด๋ฏธ ์ •์˜๋œ ์ƒ์œ„ ํด๋ž˜์Šค์˜ ๋ชจ๋“  ์†์„ฑ๊ณผ ๊ธฐ๋Šฅ์„ ํ•˜์œ„ ํด๋ž˜์Šค๊ฐ€ ๋ฌผ๋ ค๋ฐ›๋Š” ๊ฒƒ
โ‘ข ์ถ”์ƒํ™”: ๊ฐ์ฒด๋“ค ๊ฐ„์˜ ๊ณตํ†ต์ ์ธ ํŠน์ง•์„ ๋„์ถœ
โ‘ฃ ๋‹คํ˜•์„ฑ: ๊ฐ™์€ ์ด๋ฆ„์˜ ๋ฉ”์†Œ๋“œ๊ฐ€ ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘(์˜ค๋ฒ„๋กœ๋”ฉ, ์˜ค๋ฒ„๋ผ์ด๋”ฉ)

๐Ÿ’ฌ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜ ์–ธ์–ด์ธ๋ฐ ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์™œ ๊ฐ€๋Šฅํ•œ ๊ฑธ๊นŒ์š”?

์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋Š” ๋„คํŠธ์›Œํฌ ์š”์ฒญ์ด๋‚˜ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ, ํƒ€์ด๋จธ์™€ ๊ฐ™์€ ์ž‘์—…์„ ๋ฉ€ํ‹ฐ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.

์ด๋Ÿฌํ•œ ์ž‘์—…๋“ค์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์ด ์•„๋‹Œ ๋ธŒ๋ผ์šฐ์ € ๋‚ด๋ถ€์˜ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ์ธ Web APIs์—์„œ ๋น„๋™๊ธฐ + ๋…ผ๋ธ”๋กœํ‚น์œผ๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค.

์ฆ‰, ๋น„๋™๊ธฐ๋กœ ๋™์ž‘ํ•˜๋Š” ํ•ต์‹ฌ ์š”์†Œ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๊ฐ€ ์•„๋‹ˆ๋ผ ๋ธŒ๋ผ์šฐ์ €๋ผ๋Š” ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

โ“ ๋น„๋™๊ธฐ + ๋…ผ๋ธ”๋กœํ‚น

๋ฉ”์ธ ์Šค๋ ˆ๋“œ๊ฐ€ ์ž‘์—…์„ ๋‹ค๋ฅธ ๊ณณ์— ์š”์ฒญํ•˜์—ฌ ๋Œ€์‹  ์‹คํ–‰ํ•˜๊ณ , ๊ทธ ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด
์ด๋ฒคํŠธ๋‚˜ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ๋ฐ›์•„ ๊ฒฐ๊ณผ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ์‹

๐Ÿ’ก ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์™œ ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ ์ธ๊ฐ€?

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

๐Ÿ’ฌ ํด๋กœ์ €์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

ํด๋กœ์ €๋ž€ ํ•จ์ˆ˜์˜ ๋ ‰์‹œ์ปฌ ์Šค์ฝ”ํ”„๋ฅผ ๊ธฐ์–ตํ•˜์—ฌ ํ•จ์ˆ˜๊ฐ€ ๋ ‰์‹œ์ปฌ ์Šค์ฝ”ํ”„ ๋ฐ–์—์„œ ์‹คํ–‰๋  ๋•Œ๋„
๊ทธ ์Šค์ฝ”ํ”„์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

ํด๋กœ์ €๋Š” ์ฃผ๋กœ ์บก์Аํ™”์™€ ์ •๋ณด ์€๋‹‰์„ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.

๐Ÿ’ฌ ํ”„๋กœํ† ํƒ€์ž…๊ณผ ํ”„๋กœํ† ํƒ€์ž… ์ฒด์ธ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ํ”„๋กœํ† ํƒ€์ž… ๊ธฐ๋ฐ˜ ์–ธ์–ด์ด๋ฉฐ ํ”„๋กœํ† ํƒ€์ž…์€ ๊ฐ์ฒด์˜ ์›ํ˜•์„ ์˜๋ฏธํ•œ๋‹ค.
๋ชจ๋“  ๊ฐ์ฒด๋Š” ํ”„๋กœํ† ํƒ€์ž… ๊ฐ์ฒด์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ”„๋กœํ† ํƒ€์ž… ๊ฐ์ฒด๋กœ๋ถ€ํ„ฐ ์†์„ฑ๊ณผ ๋ฉ”์†Œ๋“œ๋ฅผ ์ƒ์†๋ฐ›๋Š”๋‹ค.
์ฆ‰, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด๋Š” ์ž์‹ ์˜ ๋ถ€๋ชจ ์—ญํ• ์„ ํ•˜๋Š” ํ”„๋กœํ† ํƒ€์ž… ๊ฐ์ฒด์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค.

์–ด๋– ํ•œ ๊ฐ์ฒด๊ฐ€ ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผํ•˜๋ ค๊ณ  ํ•  ๋•Œ,
ํ•ด๋‹น ๊ฐ์ฒด์— ํ”„๋กœํผํ‹ฐ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด __proto__๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋งํฌ๋ฅผ ๋”ฐ๋ผ
์ž์‹ ์˜ ๋ถ€๋ชจ ์—ญํ• ์„ ํ•˜๋Š” ํ”„๋กœํ† ํƒ€์ž… ๊ฐ์ฒด์—์„œ ์ˆœ์ฐจ์ ์œผ๋กœ ๊ฒ€์ƒ‰ํ•œ๋‹ค.
๋ชจ๋“  ํ”„๋กœํ† ํƒ€์ž… ์ฒด์ด๋‹์˜ ์ข…์ ์€ Object.prototype์ด๋‹ค.

๐Ÿ’ฌ constructor, prototype, instance์˜ ๊ด€๊ณ„์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

์ƒ์„ฑ์ž ํ•จ์ˆ˜(constructor)๋ฅผ ํ†ตํ•ด ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ํ•ด๋‹น ์ธ์Šคํ„ด์Šค๋Š” __proto__๋ผ๋Š” ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ–๋Š”๋‹ค.
__proto__๋Š” ์ƒ์„ฑ์ž ํ•จ์ˆ˜์˜ ํ”„๋กœํผํ‹ฐ์ธ prototype ๊ฐ์ฒด๋ฅผ ๊ทธ๋Œ€๋กœ ์ฐธ์กฐํ•œ๋‹ค.
prototype์€ ๋ถ€๋ชจ ์—ญํ• ์„ ํ•˜๋Š” ๊ฐ์ฒด๋กœ์„œ ์†์„ฑ๊ณผ ๋ฉ”์†Œ๋“œ๋ฅผ ํ•ด๋‹น ๊ฐ์ฒด์—๊ฒŒ ์ƒ์†ํ•œ๋‹ค.

๐Ÿ’ฌ ํด๋ž˜์Šค์˜ ์Šคํƒœํ‹ฑ ๋ฉค๋ฒ„์™€ ํ”„๋กœํ† ํƒ€์ž… ๋ฉค๋ฒ„์˜ ์ฐจ์ด๋ฅผ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

ํ”„๋กœํ† ํƒ€์ž… ๋ฉค๋ฒ„๋Š” ์ธ์Šคํ„ด์Šค์—์„œ ์ž์‹ ์ด ์ƒ์†๋ฐ›์€ ๊ฒƒ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์Šคํƒœํ‹ฑ ๋ฉค๋ฒ„๋Š” ์ธ์Šคํ„ด์Šค์—์„œ ์ง์ ‘ ํ˜ธ์ถœํ•  ์ˆ˜ ์—†์œผ๋ฉฐ
์ƒ์„ฑ์ž ํ•จ์ˆ˜ ์ž์ฒด๋ฅผ this๋กœ ๋ฐ”์ธ๋”ฉํ•˜์—ฌ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ’ฌ ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด์˜ ์†์„ฑ์„ ํ•ด์ฒดํ•˜์—ฌ ๊ทธ ๊ฐ’์„ ๊ฐœ๋ณ„ ๋ณ€์ˆ˜์— ๋‹ด์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” JavaScript ํ‘œํ˜„์‹์ด๋‹ค.

let a, b, rest;
[a, b] = [10, 20];

console.log(a); // 10
console.log(b); // 20

[a, b, ...rest] = [10, 20, 30, 40, 50];

console.log(rest); // [30, 40, 50]
profile
์ฝ๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ์™€ ๊ธ€์„ ์ž‘์„ฑํ•ด์š” ๐Ÿ“

0๊ฐœ์˜ ๋Œ“๊ธ€