๐Ÿ“Œ ๊ธฐ์ˆ  ๋ฉด์ ‘ ์ค€๋น„ ๊ด€๋ จ_Javascript

Q : ์Šค์ฝ”ํ”„์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

A : ์Šค์ฝ”ํ”„๋Š” ๋ณ€์ˆ˜ ๋˜๋Š” ํ•จ์ˆ˜๊ฐ€ ์œ ํšจํ•œ ๋ฒ”์œ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐœ๋…์ž…๋‹ˆ๋‹ค. ์Šค์ฝ”ํ”„๋Š” ์ฝ”๋“œ์—์„œ ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•˜๊ฑฐ๋‚˜ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„๋ฅผ ๊ฒฐ์ •ํ•˜๋ฉฐ, ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋ณ€์ˆ˜ ๋˜๋Š” ํ•จ์ˆ˜์˜ ๊ฐ€์‹œ์„ฑ๊ณผ ์ƒ์กด ๊ธฐ๊ฐ„์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

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

๐Ÿ“ ์ฃผ์š” ์œ ํ˜•์˜ ์Šค์ฝ”ํ”„

  1. ์ „์—ญ ์Šค์ฝ”ํ”„(Global Scope) : ํ”„๋กœ๊ทธ๋žจ ์ „์ฒด์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„. ์ „์—ญ ์Šค์ฝ”ํ”„์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ๊ณ„์† ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•จ.
  2. ์ง€์—ญ ์Šค์ฝ”ํ”„(Local Scope) : ํŠน์ • ๋ธ”๋ก ๋˜๋Š” ํ•จ์ˆ˜ ๋‚ด์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๊ฐ€ ํ•ด๋‹น ๋ธ”๋ก ๋˜๋Š” ํ•จ์ˆ˜ ๋‚ด์—์„œ๋งŒ ์œ ํšจํ•œ ๋ฒ”์œ„๋ฅผ ๊ฐ€์ง.

    โญ๏ธ ES6๋ถ€ํ„ฐ๋Š” let๊ณผ const๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ธ”๋ก ์Šค์ฝ”ํ”„ ๋ณ€์ˆ˜๋ฅผ ๋„์ž…ํ–ˆ๋‹ค.
    ์ด๋“ค์€ ๋ธ”๋ก๋‚ด์—์„œ๋งŒ ์œ ํšจํ•˜๋ฉฐ ์ „์—ญ ์Šค์ฝ”ํ”„๋‚˜ ํ•จ์ˆ˜ ์Šค์ฝ”ํ”„์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค.

Q : ์Šค์ฝ”ํ”„์™€ ํด๋กœ์ ธ, ์‹คํ–‰ context๋ฅผ ์—ฐ๊ด€์ง€์–ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

A : ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์Šค์ฝ”ํ”„๋Š” ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜์˜ ์œ ํšจ ๋ฒ”์œ„๋ฅผ ๊ฒฐ์ •ํ•˜๊ณ  ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋Š” ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋Š” ํ™˜๊ฒฝ์„ ์ œ์–ดํ•˜๋ฉฐ ํด๋กœ์ €๋Š” ํ•จ์ˆ˜๊ฐ€ ์„ ์–ธ๋œ ์Šค์ฝ”ํ”„์— ์žˆ๋Š” ๋ณ€์ˆ˜๋ฅผ ๊ธฐ์–ตํ•˜์—ฌ ์™ธ๋ถ€์—์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.

ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด ์ƒˆ๋กœ์šด ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๊ฐ€ ์ƒ์„ฑ๋˜๋ฉฐ, ์ด๋•Œ ํ•จ์ˆ˜์˜ ์Šค์ฝ”ํ”„๊ฐ€ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค. ํด๋กœ์ €๋Š” ํ•จ์ˆ˜๊ฐ€ ๋‹ค๋ฅธ ์Šค์ฝ”ํ”„์—์„œ ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•  ๋•Œ ํ˜•์„ฑ๋˜๋ฉฐ, ์ด๋•Œ ํด๋กœ์ €๊ฐ€ ํ˜•์„ฑ๋œ ์Šค์ฝ”ํ”„๊ฐ€ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ์˜ ์ผ๋ถ€๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.


Q : ๋ฐฐ์—ด, ๊ฐ์ฒด๋ฅผ const๋กœ ์„ ์–ธํ–ˆ๋Š”๋ฐ ์š”์†Œ๋‚˜ ์†์„ฑ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ์ด์œ ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

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

  1. ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ๋ถˆ๋ณ€์„ฑ : const๋กœ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋ฉด ํ•ด๋‹น ๋ณ€์ˆ˜๋Š” ์žฌํ• ๋‹น์ด ๋ถˆ๊ฐ€๋Šฅ. ์ด๊ฒƒ์€ ๋ณ€์ˆ˜๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ฐจ์ง€ํ•˜๋Š” ์œ„์น˜๋ฅผ ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Œ์„ ์˜๋ฏธ
  2. ๊ฐ์ฒด์™€ ๋ฐฐ์—ด์˜ ๊ฐ€๋ณ€์„ฑ(mutable) : ๋ฐฐ์—ด๊ณผ ๊ฐ์ฒด๋Š” ๊ฐ€๋ณ€์„ฑ ๋ฐ์ดํ„ฐ ํƒ€์ž…. ํ•ด๋‹น ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์˜ ๋‚ด๋ถ€ ์š”์†Œ๋‚˜ ์†์„ฑ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋ฉฐ ๊ฐ์ฒด ๋˜๋Š” ๋ฐฐ์—ด์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ณ€์ˆ˜๋ฅผ const๋กœ ์„ ์–ธํ•˜๋”๋ผ๋„ ๊ฐ์ฒด, ๋ฐฐ์—ด์˜ ๋‚ด์šฉ์€ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Œ

Q : ์›์‹œ ์ž๋ฃŒํ˜•๊ณผ ์ฐธ์กฐ ์ž๋ฃŒํ˜•์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

A : ์›์‹œ ์ž๋ฃŒํ˜•์€ ์ˆซ์ž, ๋ฌธ์ž์—ด, ๋ถˆ๋ฆฌ์–ธ ๋“ฑ๊ณผ ๊ฐ™์€ ๋‹จ์ˆœํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ ๋ณ€์ˆ˜์—๋Š” ๊ฐ’ ์ž์ฒด๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๊ณ  ์ด ๊ฐ’์€ ๋ณต์‚ฌ๋  ๋•Œ ๋ณ€์ˆ˜ ๊ฐ„์— ๋…๋ฆญ์ ์œผ๋กœ ์ €์žฅ์ด๋ฉ๋‹ˆ๋‹ค.

์ฐธ์กฐ ์ž๋ฃŒํ˜•์€ ๊ฐ์ฒด, ๋ฐฐ์—ด, ํ•จ์ˆ˜ ๋“ฑ๊ณผ ๊ฐ™์€ ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ ๋ณ€์ˆ˜์—๋Š” ๊ฐ’์ด ์•„๋‹Œ ๊ฐ’์ด ์ €์žฅ๋œ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ(heap)๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๊ณ  ์ด ์ฃผ์†Œ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผ์„ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋ณ€์ˆ˜ ๊ฐ„์— ๊ฐ’์„ ๊ณต์œ ํ•˜๋ฏ€๋กœ ํ•œ ๋ณ€์ˆ˜์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด ๋‹ค๋ฅธ ๋ณ€์ˆ˜์—์„œ๋„ ์˜ํ–ฅ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


Q : ์–•์€ ๋ณต์‚ฌ์™€ ๊นŠ์€ ๋ณต์‚ฌ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

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

๊นŠ์€ ๋ณต์‚ฌ๋Š” ๋‚ด๋ถ€์˜ ๋ชจ๋“  ๋ ˆ๋ฒจ์˜ ๊ฐ’์„ ๋ณต์‚ฌํ•˜๋ฏ€๋กœ ์ƒˆ๋กœ์šด ๋ณ€์ˆ˜์™€ ์›๋ณธ ๋ณ€์ˆ˜๋Š” ์™„์ „ํžˆ ๋…๋ฆฝ์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ๊นŠ์€ ๋ณต์‚ฌ๋ฅผ ์œ„ํ•ด์„œ๋Š” ์ถ”๊ฐ€์ ์ธ ์ž‘์—…์ด ํ•„์š”ํ•˜๋ฉฐ, ์ฃผ๋กœ ์žฌ๊ท€์ ์ธ ๋ฐฉ๋ฒ•, JSON.stringfy์™€ JSON.parse๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• ๋“ฑ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.


Q : ๋™๊ธฐ์™€ ๋น„๋™๊ธฐ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”

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


Q : ์ฝœ๋ฐฑํ•จ์ˆ˜์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”

A : ์ฝœ๋ฐฑ ํ•จ์ˆ˜(callback function)๋Š” ๋‹ค๋ฅธ ํ•จ์ˆ˜์—๊ฒŒ ์ธ์ž๋กœ ์ „๋‹ฌ๋˜์–ด ๋‚˜์ค‘์— ์‹คํ–‰๋˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์–ด๋–ค ์ผ์ด ์™„๋ฃŒ๋˜์—ˆ์„ ๋•Œ, ํŠน์ •ํ•œ ๋™์ž‘์ด๋‚˜ ๋กœ์ง์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

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


Q : Promise์˜ ๊ธฐ๋Šฅ๊ณผ ํ•„์š”ํ•œ ์ด์œ ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

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

๐Ÿ“ Promise์˜ ๊ธฐ๋Šฅ

  1. ๋น„๋™๊ธฐ ์ž‘์—… ์ฒ˜๋ฆฌ
    • Promise๋Š” ๋น„๋™๊ธฐ์ ์ธ ์ž‘์—…์„ ๋…ผ๋ฆฌ์ ์œผ๋กœ ๊ตฌ์„ฑํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
    • ํŠนํžˆ ๋„คํŠธ์›Œํฌ ์š”์ฒญ, ํŒŒ์ผ ์ฝ๊ธฐ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฟผ๋ฆฌ ๋“ฑ๊ณผ ๊ฐ™์€ ๋น„๋™๊ธฐ์ ์ธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
  2. ์ค‘์ฒฉ๋œ ์ฝœ๋ฐฑ ํ•จ์ˆ˜ ๋ฐฉ์ง€ : ์ฝœ๋ฐฑ ์ง€์˜ฅ์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ ๋” ์ฝ๊ธฐ ์‰ฝ๊ณ  ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์šฉ์ดํ•ด์ง‘๋‹ˆ๋‹ค.
  3. ๋น„๋™๊ธฐ ์ฝ”๋“œ์˜ ์„ ์–ธ์  ํ‘œํ˜„ : ์ฝ”๋“œ๋ฅผ ์„ ์–ต์ ์œผ๋กœ ํ‘œํ˜„ํ•˜์—ฌ ์ฝ”๋“œ์˜ ์˜๋„๋ฅผ ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ์ „๋‹ฌํ•˜์—ฌ ๊ฐ€๋…์„ฑ์„ ํ–ฅ์ƒ ์‹œํ‚ด
  4. ์—๋Ÿฌ ์ฒ˜๋ฆฌ
    • catch() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Promise ์ฒด์ธ ๋‚ด์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์ฝœ๋ฐฑ ๊ธฐ๋ฐ˜์˜ ๋น„๋™๊ธฐ ์ฝ”๋“œ์—์„œ๋Š” ๋‹ค๋ฃจ๊ธฐ ์–ด๋ ค์› ๋˜ ์—๋Ÿฌ ์ฒ˜๋ฆฌ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.

๐Ÿ“ Promise๊ฐ€ ํ•„์š”ํ•œ ์ด์œ 

1. ๋น„๋™๊ธฐ ์ž‘์—…์˜ ์ฆ‰์‹œ์„ฑ ๋ณด์žฅ : Javascript๋Š” ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ ์–ธ์–ด์ด๊ธฐ ๋•Œ๋ฌธ์—, ๋น„๋™๊ธฐ ์ž‘์—…์„ ํ†ตํ•ด ๋‹ค๋ฅธ ์ฝ”๋“œ๊ฐ€ ๋ธ”๋ก๋˜์ง€ ์•Š๊ณ  ๊ณ„์† ์‹คํ–‰๋  ์ˆ˜ ์žˆ์–ด ๋น„๋™๊ธฐ ์ž‘์—…์„ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ• ์ˆ˜ ์žˆ์Œ
2. ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ ํ–ฅ์ƒ : ๋น„๋™๊ธฐ ์ฝ”๋“œ๋ฅผ ๋ณด๋‹ค ๋ช…ํ™•ํ•˜๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์–ด ๊ฐ€๋…์„ฑ์ด ํ–ฅ์ƒ๋˜๊ณ  ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค.
3. ์—๋Ÿฌ ์ฒ˜๋ฆฌ์˜ ํŽธ์˜์„ฑ : catch()๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—๋Ÿฌ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด ์ฝ”๋“œ ๋‚ด์—์„œ ์˜ˆ์™ธ ์ƒํ™ฉ์— ๋Œ€ํ•œ ์ ์ ˆํ•œ ์กฐ์ทจ๋ฅผ ์ทจํ•ด ์—๋Ÿฌ ์ฒ˜๋ฆฌ ์ฝ”๋“œ๋ฅผ ์ค‘์•™์—์„œ ๊ด€๋ฆฌํ•˜๊ณ  ์ถ”์ ํ•˜๊ธฐ๊ฐ€ ๋” ์šฉ์ดํ•ด์ง‘๋‹ˆ๋‹ค.
4. Promise ๊ธฐ๋ฐ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ API์™€์˜ ํ˜ธํ™˜์„ฑ : ๋งŽ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ API๊ฐ€ Promise ๊ธฐ๋ฐ˜์œผ๋กœ ๋น„๋™๊ธฐ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ์„ค๊ณ„๋˜์–ด ์žˆ๊ณ  ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋Ÿฌํ•œ ์ž์›๊ณผ ๋” ์‰ฝ๊ฒŒ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


Q : Promise.all()์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

A : ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋น„๋™๊ธฐ ์ž‘์—…์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•˜๊ณ  ์‹ถ์„๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.


Q : Async/ await ์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

A : async์™€ await๋Š” JavaScript์—์„œ ๋น„๋™๊ธฐ ์ฝ”๋“œ๋ฅผ ๋” ๊ฐ„ํŽธํ•˜๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋„๋ก ๋„์ž…๋œ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.
async ํ•จ์ˆ˜ ๋‚ด์—์„œ๋Š” await ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋น„๋™๊ธฐ ์ž‘์—…์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


Q : Promise์™€ Async, await์˜ ์ฐจ์ด๋ฅผ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”

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


Q : ์ˆœ์ˆ˜ํ•จ์ˆ˜๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”? ๋ถˆ๋ณ€์„ฑ๊ณผ ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ์™€ ์—ฐ๊ฒฐํ•˜์—ฌ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

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

๋ถˆ๋ณ€์„ฑ(Immutability) : ๋ฐ์ดํ„ฐ๊ฐ€ ์ƒ์„ฑ๋œ ํ›„์— ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š” ์„ฑ์งˆ์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ ์ด๋ฅผ ์œ ์ง€ํ•˜๊ฒŒ ๋˜๋ฉด ์ฝ”๋“œ์˜ ์˜ˆ์ธก ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์•„์ง€๊ณ , ๋””๋ฒ„๊น…์ด ์‰ฌ์›Œ์ง€๋ฉฐ ์ฝ”๋“œ๊ฐ€ ์•ˆ์ •์ ์œผ๋กœ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ(Side Effect) : ํ•จ์ˆ˜์˜ ์‹คํ–‰์ด ์™ธ๋ถ€์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋ฉฐ ์ด๋Š” ์ฃผ๋กœ ์™ธ๋ถ€ ๋ณ€์ˆ˜์˜ ๋ณ€๊ฒฝ, ์˜ˆ์™ธ ๋ฐœ์ƒ, ๋„คํŠธ์›Œํฌ ์š”์ฒญ๋“ฑ์„ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.


Q : Javascript์—์„œ ํ•จ์ˆ˜ ํ˜ธ์ถœ๋ฐฉ์‹์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”

A : ํ•จ์ˆ˜ ํ˜ธ์ถœ์€ ํฌ๊ฒŒ ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ์˜ ๋‘๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.

  1. ํ•จ์ˆ˜ ํ˜ธ์ถœ : ํ•จ์ˆ˜ ํ˜ธ์ถœ์€ ์ผ๋ฐ˜์ ์€ ํ•จ์ˆ˜ ํ˜ธ์ถœ ๋ฐฉ์‹์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ์ง์ ‘ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
  function greet(name) { 
  console.log('Hello,'+name+'!');
  }
  
  greet('Jhon') // ํ•จ์ˆ˜ ํ˜ธ์ถœ = Hello, John!
  1. ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ : ํ•จ์ˆ˜๊ฐ€ ๊ฐ์ฒด์˜ ๋ฉ”์†Œ๋“œ๋กœ ์ •์˜๋˜์–ด ์žˆ์„ ๋•Œ ๊ทธ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
  var person = {
  name : 'Alice',
  greet: function() {
  console.log('Hello,'+this.name+'!');
  }
 };
  
 person.greet(); // ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ = Hello, Alice
  1. ์ƒ์„ฑ์ž ํ˜ธ์ถœ : ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑ์ž๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. new ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  function Dog(name) {
  this.name = name;
  }
  
  var myDog = new Dog('Buddy'); // ์ƒ์„ฑ์ž ํ˜ธ์ถœ

Q : ํ˜ธ์ด์ŠคํŒ…์˜ ๊ฐœ๋…๊ณผ ๋ฐœ์ƒํ•˜๋Š” ์ด์œ ๋ฅผ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

A : ํ˜ธ์ด์ŠคํŒ…์ด๋ž€ Javascript์—์„œ ๋ณ€์ˆ˜ ๋ฐ ํ•จ์ˆ˜ ์„ ์–ธ์ด ์ฝ”๋“œ์˜ ์ƒ๋‹จ์œผ๋กœ ์˜ฎ๊ฒจ์ง€๋Š” ํ˜„์ƒ์„ ๋งํ•˜๋ฉฐ ์ด๋Š” ์ฝ”๋“œ ์‹คํ–‰ ์ „์— ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ๋“ฑ๋ก๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

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

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