S06L04 – ํ™”์‚ดํ‘œ ํ•จ์ˆ˜

html

JavaScript์—์„œ Arrow Functions ๋งˆ์Šคํ„ฐํ•˜๊ธฐ: ์ข…ํ•ฉ ์•ˆ๋‚ด์„œ

๋ชฉ์ฐจ

  1. ์†Œ๊ฐœ ............................................................ 1
  2. Arrow Functions ์ดํ•ดํ•˜๊ธฐ .................... 3
  3. ์ „ํ†ต์ ์ธ ํ•จ์ˆ˜์—์„œ Arrow Functions๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ............................................................... 6
  4. ์—ฌ๋Ÿฌ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ๋ฌธ์žฅ์„ ๊ฐ–๋Š” Arrow Functions ............................................................... 9
  5. ์‹ค์šฉ์ ์ธ ์˜ˆ์ œ ............................................ 12
  6. ๋น„๊ต: ์ „ํ†ต์ ์ธ ํ•จ์ˆ˜ vs. Arrow Functions .............................................................. 16>
  7. Arrow Functions์„ ์‚ฌ์šฉํ•  ๋•Œ์™€ ์žฅ์†Œ ...... 18>
  8. ๊ฒฐ๋ก  .............................................................. 20>

์†Œ๊ฐœ

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


Arrow Functions ์ดํ•ดํ•˜๊ธฐ

Arrow Functions๋ž€?

Arrow functions, ES6(ECMAScript 2015)์— ๋„์ž…๋œ ์ด๋ž˜๋กœ ํ•จ์ˆ˜ ํ‘œํ˜„์„ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ„๊ฒฐํ•œ ๋ฌธ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋“ค์€ ๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ ์ฝ”๋“œ๋ฅผ ๋‹จ์ถ•์‹œํ‚ฌ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ์ฃผ๋ณ€ ์Šค์ฝ”ํ”„์—์„œ this ์ปจํ…์ŠคํŠธ๋ฅผ ์ƒ์†๋ฐ›์•„ ์ „ํ†ต์ ์ธ ํ•จ์ˆ˜์™€ ๊ด€๋ จ๋œ ์ผ๋ฐ˜์ ์ธ ํ•จ์ •๋“ค์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

์ „ํ†ต์ ์ธ ํ•จ์ˆ˜ ํ‘œํ˜„์‹:

Arrow Function ๋™๋“ฑ๋ฌผ:

Arrow Functions ์‚ฌ์šฉ์˜ ์ด์ 

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

์ „ํ†ต์ ์ธ ํ•จ์ˆ˜์—์„œ Arrow Functions๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ

๊ธฐ๋ณธ ๋ณ€ํ™˜

์ „ํ†ต์ ์ธ ํ•จ์ˆ˜๋ฅผ arrow function์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋ ค๋ฉด function ํ‚ค์›Œ๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ํ™”์‚ดํ‘œ(=>) ๋ฌธ๋ฒ•์„ ๋„์ž…ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ:

๋ฌธ๋ฒ• ๊ฐ„์†Œํ™”

ํ•จ์ˆ˜ ๋ณธ๋ฌธ์— ๋‹จ์ผ ๋ฐ˜ํ™˜๋ฌธ์ด ํฌํ•จ๋œ ๊ฒฝ์šฐ, ๋งค๊ฐœ๋ณ€์ˆ˜ ์ฃผ์œ„์˜ ๊ด„ํ˜ธ(๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ํ•˜๋‚˜๋ฟ์ธ ๊ฒฝ์šฐ)์™€ ์ค‘๊ด„ํ˜ธ๋ฅผ ์ œ๊ฑฐํ•˜์—ฌ arrow function์„ ๋”์šฑ ๊ฐ„์†Œํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ํ•˜๋‚˜์ธ ๊ฒฝ์šฐ ๊ด„ํ˜ธ ์—†์ด:

์ค‘๊ด„ํ˜ธ ์—†์ด ๋‹จ์ผ ํ‘œํ˜„์‹:


์—ฌ๋Ÿฌ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ๋ฌธ์žฅ์„ ๊ฐ–๋Š” Arrow Functions

์—ฌ๋Ÿฌ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ฒ˜๋ฆฌํ•˜๊ธฐ

์—ฌ๋Ÿฌ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐ›๋Š” ํ•จ์ˆ˜์˜ ๊ฒฝ์šฐ, ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ชฉ๋ก ์ฃผ์œ„์— ๊ด„ํ˜ธ๊ฐ€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

์˜ˆ์ œ:

์—ฌ๋Ÿฌ ๋ฌธ์žฅ์„ ์œ„ํ•œ ์ค‘๊ด„ํ˜ธ ์‚ฌ์šฉ

ํ•จ์ˆ˜ ๋ณธ๋ฌธ์— ๋‘ ๊ฐœ ์ด์ƒ์˜ ๋ฌธ์žฅ์ด ํฌํ•จ๋œ ๊ฒฝ์šฐ, ์ค‘๊ด„ํ˜ธ๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๋ช…์‹œ์ ์ธ return ๋ฌธ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ:


์‹ค์šฉ์ ์ธ ์˜ˆ์ œ

๋ง์…ˆ ํ•จ์ˆ˜

์ „ํ†ต์ ์ธ ๋ง์…ˆ ํ•จ์ˆ˜๋ฅผ arrow function์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ „ํ†ต์ ์ธ ํ•จ์ˆ˜:

Arrow Function ๋ณ€ํ™˜:

๋‹จ๊ณ„๋ณ„ ์„ค๋ช…:

  1. function ํ‚ค์›Œ๋“œ ์ œ๊ฑฐ: function ํ‚ค์›Œ๋“œ๋ฅผ ์ƒ๋žตํ•ฉ๋‹ˆ๋‹ค.
  2. ํ™”์‚ดํ‘œ ๋ฌธ๋ฒ• ๋„์ž…: ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ชฉ๋ก๊ณผ ํ•จ์ˆ˜ ๋ณธ๋ฌธ ์‚ฌ์ด์— ํ™”์‚ดํ‘œ(=>)๋ฅผ ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค.
  3. ์•”์‹œ์  ๋ฐ˜ํ™˜: ํ•จ์ˆ˜ ๋ณธ๋ฌธ์ด ๋‹จ์ผ ํ‘œํ˜„์‹์ด๋ฏ€๋กœ return ํ‚ค์›Œ๋“œ๊ฐ€ ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค.

์ถœ๋ ฅ:

ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ (index.js):

์ œ๊ณฑ ํ•จ์ˆ˜

๋‹ค์Œ์œผ๋กœ, ์ˆซ์ž๋ฅผ ์ œ๊ณฑํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ arrow function ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ „ํ†ต์ ์ธ ํ•จ์ˆ˜:

Arrow Function ๋ณ€ํ™˜:

๋” ๊ฐ„์†Œํ™”:

๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ํ•˜๋‚˜๋ฟ์ด๋ฏ€๋กœ ๊ด„ํ˜ธ๋ฅผ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ๋ ฅ:

ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ (index.js):


๋น„๊ต: ์ „ํ†ต์ ์ธ ํ•จ์ˆ˜ vs. Arrow Functions

ํŠน์ง• ์ „ํ†ต์ ์ธ ํ•จ์ˆ˜ Arrow Function
๋ฌธ๋ฒ• ๊ธธ์ด ๋” ๊ธธ๋ฉฐ function ํ‚ค์›Œ๋“œ๊ฐ€ ํ•„์š”ํ•จ ๋” ์งง์œผ๋ฉฐ => ๋ฌธ๋ฒ• ์‚ฌ์šฉ
this ๋ฐ”์ธ๋”ฉ ๋™์ ์ด๋ฉฐ ํ•จ์ˆ˜ ํ˜ธ์ถœ ๋ฐฉ์‹์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง ์ฃผ๋ณ€ ์Šค์ฝ”ํ”„์— ๋ ‰์‹œ์ปฌ ๋ฐ”์ธ๋”ฉ๋จ
์•”์‹œ์  ๋ฐ˜ํ™˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋ ค๋ฉด return ํ‚ค์›Œ๋“œ๊ฐ€ ํ•„์š”ํ•จ ํ‘œํ˜„์‹์„ ์•”์‹œ์ ์œผ๋กœ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์Œ
์ƒ์„ฑ์ž new์™€ ํ•จ๊ป˜ ์ƒ์„ฑ์ž๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ ์ƒ์„ฑ์ž๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ
Arguments ๊ฐ์ฒด arguments ๊ฐ์ฒด์— ์ ‘๊ทผ ๊ฐ€๋Šฅ arguments ๊ฐ์ฒด๊ฐ€ ์ž์ฒด์ ์œผ๋กœ ์—†์Œ

์˜ˆ์ œ ๋น„๊ต:


Arrow Functions์„ ์‚ฌ์šฉํ•  ๋•Œ์™€ ์žฅ์†Œ

Arrow Functions์„ ์‚ฌ์šฉํ•  ๋•Œ

  • ์งง์€ ํ•จ์ˆ˜ ํ‘œํ˜„: ๋ฐฐ์—ด ๋ฉ”์„œ๋“œ(map, filter, reduce)์™€ ๊ฐ™์€ ๋‹จ์ˆœํ•œ ์ž‘์—…์— ์ด์ƒ์ ์ž…๋‹ˆ๋‹ค.
  • this ์ปจํ…์ŠคํŠธ ์œ ์ง€: ๋ถ€๋ชจ ์Šค์ฝ”ํ”„์˜ this ์ปจํ…์ŠคํŠธ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•  ๋•Œ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
  • ๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ ์ฝ”๋“œ ๊ฐ์†Œ: ๋” ๊นจ๋—ํ•˜๊ณ  ๊ฐ„๊ฒฐํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

Arrow Functions์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๋•Œ

  • ๊ฐ์ฒด ๋ฉ”์„œ๋“œ: Arrow functions์€ ์ž์ฒด this๋ฅผ ๊ฐ€์ง€์ง€ ์•Š์œผ๋ฏ€๋กœ ๋™์  this ๋ฐ”์ธ๋”ฉ์— ์˜์กดํ•˜๋Š” ๊ฐ์ฒด ๋ฉ”์„œ๋“œ์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์ƒ์„ฑ์ž ํ•จ์ˆ˜: prototype์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— new ํ‚ค์›Œ๋“œ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • ๋™์  ์ปจํ…์ŠคํŠธ ์š”๊ตฌ ์ƒํ™ฉ: ๋™์  this ๋ฐ”์ธ๋”ฉ์ด ํ•„์š”ํ•œ ์ƒํ™ฉ.

์˜ˆ์ œ: ์ „ํ†ต์ ์ธ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ์ฒด ๋ฉ”์„œ๋“œ

๊ฐ์ฒด ๋ฉ”์„œ๋“œ์—์„œ Arrow Function์„ ์ž˜๋ชป ์‚ฌ์šฉํ•œ ์˜ˆ


๊ฒฐ๋ก 

Arrow functions์€ JavaScript์—์„œ ์ค‘์š”ํ•œ ๋ฐœ์ „์„ ์˜๋ฏธํ•˜๋ฉฐ, ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ ํ•จ์ˆ˜ ํ‘œํ˜„์„ ์ž‘์„ฑํ•˜๋Š” ๋ณด๋‹ค ๊ฐ„๊ฒฐํ•˜๊ณ  ์ง๊ด€์ ์ธ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ ‰์‹œ์ปฌ this ์ปจํ…์ŠคํŠธ๋ฅผ ์œ ์ง€ํ•˜๊ณ  ๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ ์ฝ”๋“œ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์€ ํ˜„๋Œ€ JavaScript ๊ฐœ๋ฐœ์—์„œ ์œ ์šฉํ•œ ๋„๊ตฌ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋“ค์˜ ํ•œ๊ณ„๋ฅผ ์ดํ•ดํ•˜๊ณ  ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ํฌ์ธํŠธ:

  • Arrow functions์€ ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ„๊ฒฐํ•œ ๋ฌธ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์ฃผ๋ณ€ ์Šค์ฝ”ํ”„์—์„œ this ์ปจํ…์ŠคํŠธ๋ฅผ ์ƒ์†๋ฐ›์Šต๋‹ˆ๋‹ค.
  • ์งง๊ณ  ๋‹จ์ผ ๋ชฉ์ ์˜ ํ•จ์ˆ˜ ๋ฐ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์— ์ด์ƒ์ ์ž…๋‹ˆ๋‹ค.
  • ๊ฐ์ฒด ๋ฉ”์„œ๋“œ๋‚˜ ์ƒ์„ฑ์ž ํ•จ์ˆ˜์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

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

์ฐธ๊ณ : ์ด ๊ธฐ์‚ฌ๋Š” AI์— ์˜ํ•ด ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.






Share your love