html
JavaScript์์ Arrow Functions ๋ง์คํฐํ๊ธฐ: ์ข ํฉ ์๋ด์
๋ชฉ์ฐจ
- ์๊ฐ ............................................................ 1
- Arrow Functions ์ดํดํ๊ธฐ .................... 3
- 2.1 Arrow Functions๋? ..................... 3
- 2.2 Arrow Functions ์ฌ์ฉ์ ์ด์ ...... 4>
- ์ ํต์ ์ธ ํจ์์์ Arrow Functions๋ก ๋ณํํ๊ธฐ ............................................................... 6
- 3.1 ๊ธฐ๋ณธ ๋ณํ ............................................. 6
- 3.2 ๋ฌธ๋ฒ ๊ฐ์ํ ......................................... 7
- ์ฌ๋ฌ ๋งค๊ฐ๋ณ์์ ๋ฌธ์ฅ์ ๊ฐ๋ Arrow Functions ............................................................... 9
- 4.1 ์ฌ๋ฌ ๋งค๊ฐ๋ณ์ ์ฒ๋ฆฌํ๊ธฐ ................ 9
- 4.2 ์ฌ๋ฌ ๋ฌธ์ฅ์ ์ํ ์ค๊ดํธ ์ฌ์ฉ ...... 10>
- ์ค์ฉ์ ์ธ ์์ ............................................ 12
- 5.1 ๋ง์ ํจ์ ......................................... 12
- 5.2 ์ ๊ณฑ ํจ์ ............................................ 14>
- ๋น๊ต: ์ ํต์ ์ธ ํจ์ vs. Arrow Functions .............................................................. 16>
- Arrow Functions์ ์ฌ์ฉํ ๋์ ์ฅ์ ...... 18>
- ๊ฒฐ๋ก .............................................................. 20>
์๊ฐ
JavaScript, ๋ค์ฌ๋ค๋ฅํ๊ณ ๊ฐ๋ ฅํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด, ๊ฐ๋ฐ์๋ค์๊ฒ ๋ ํจ์จ์ ์ด๊ณ ์ฝ๊ธฐ ์ฌ์ด ์ฝ๋ ์์ฑ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๊ธฐ ์ํด ์ง์์ ์ผ๋ก ๋ฐ์ ํฉ๋๋ค. ์ด๋ฌํ ๋ฐ์ ์ค ํ๋๊ฐ arrow functions์ ๋์ ์ผ๋ก, ํจ์ ํํ์ ๊ฐ์ํํ๊ณ ์ฝ๋์ ๋ช ํ์ฑ์ ํฅ์์ํค๋ ๊ธฐ๋ฅ์ ๋๋ค. ์ด ์ ์์ฑ ์ arrow functions์ ๋ณต์กํ ๋ฉด๋ชจ๋ฅผ ์ฌ์ธต์ ์ผ๋ก ๋ค๋ฃจ๋ฉฐ, ์ด๋ณด์ ๋ฐ ๊ธฐ๋ณธ ์ง์์ ๊ฐ์ง ๊ฐ๋ฐ์๋ค์ด ๊ทธ ์ ์ฌ๋ ฅ์ ์ต๋ํ ํ์ฉํ ์ ์๋๋ก ์๋ดํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๋ฌธ๋ฒ, ์ด์ , ์ค์ฉ์ ์ธ ์์ , ๊ทธ๋ฆฌ๊ณ JavaScript ํ๋ก์ ํธ์์ arrow functions์ ์ฌ์ฉํ๋ ์ต์ ์ ๋ฐฉ๋ฒ์ ํ๊ตฌํ ๊ฒ์ ๋๋ค.
Arrow Functions ์ดํดํ๊ธฐ
Arrow Functions๋?
Arrow functions, ES6(ECMAScript 2015)์ ๋์ ๋ ์ด๋๋ก ํจ์ ํํ์ ์์ฑํ๊ธฐ ์ํ ๊ฐ๊ฒฐํ ๋ฌธ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ค์ ๋ณด์ผ๋ฌํ๋ ์ดํธ ์ฝ๋๋ฅผ ๋จ์ถ์ํฌ ๋ฟ๋ง ์๋๋ผ, ์ฃผ๋ณ ์ค์ฝํ์์ this ์ปจํ ์คํธ๋ฅผ ์์๋ฐ์ ์ ํต์ ์ธ ํจ์์ ๊ด๋ จ๋ ์ผ๋ฐ์ ์ธ ํจ์ ๋ค์ ์ ๊ฑฐํฉ๋๋ค.
์ ํต์ ์ธ ํจ์ ํํ์:
1 2 3 |
function add(a, b) { return a + b; } |
Arrow Function ๋๋ฑ๋ฌผ:
1 |
const add = (a, b) => a + b; |
Arrow Functions ์ฌ์ฉ์ ์ด์
- ๊ฐ๊ฒฐํ ๋ฌธ๋ฒ: ๋ณด์ผ๋ฌํ๋ ์ดํธ ์ฝ๋๋ฅผ ์ค์ฌ ์์ฑ๊ณผ ์ฝ๊ธฐ๊ฐ ์ฉ์ดํฉ๋๋ค.
- ๋ ์์ปฌ this: ๋ถ๋ชจ ์ค์ฝํ์์ this๋ฅผ ์์๋ฐ์ ์ผ๋ฐ์ ์ธ ์ค๋ฅ๋ฅผ ๋ฐฉ์งํฉ๋๋ค.
- ์์์ ๋ฐํ: ๋จ์ผ ํํ์ ํจ์์ ๊ฒฝ์ฐ, return ํค์๋๋ฅผ ์๋ตํ ์ ์์ต๋๋ค.
- ํฅ์๋ ๊ฐ๋ ์ฑ: ์งง์ ์ฝ๋๋ ์ ์ฒด์ ์ธ ๊ฐ๋ ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ๊ฐ์ ํฉ๋๋ค.
์ ํต์ ์ธ ํจ์์์ Arrow Functions๋ก ๋ณํํ๊ธฐ
๊ธฐ๋ณธ ๋ณํ
์ ํต์ ์ธ ํจ์๋ฅผ arrow function์ผ๋ก ๋ณํํ๋ ค๋ฉด function ํค์๋๋ฅผ ์ ๊ฑฐํ๊ณ ํ์ดํ(=>) ๋ฌธ๋ฒ์ ๋์ ํ๋ฉด ๋ฉ๋๋ค.
์์ :
1 2 3 4 5 6 7 |
// ์ ํต์ ์ธ ํจ์ function greet(name) { return `Hello, ${name}!`; } // Arrow Function const greet = (name) => `Hello, ${name}!`; |
๋ฌธ๋ฒ ๊ฐ์ํ
ํจ์ ๋ณธ๋ฌธ์ ๋จ์ผ ๋ฐํ๋ฌธ์ด ํฌํจ๋ ๊ฒฝ์ฐ, ๋งค๊ฐ๋ณ์ ์ฃผ์์ ๊ดํธ(๋งค๊ฐ๋ณ์๊ฐ ํ๋๋ฟ์ธ ๊ฒฝ์ฐ)์ ์ค๊ดํธ๋ฅผ ์ ๊ฑฐํ์ฌ arrow function์ ๋์ฑ ๊ฐ์ํํ ์ ์์ต๋๋ค.
๋งค๊ฐ๋ณ์๊ฐ ํ๋์ธ ๊ฒฝ์ฐ ๊ดํธ ์์ด:
1 2 3 4 5 6 7 |
// ์ ํต์ ์ธ ํจ์ function square(x) { return x * x; } // Arrow Function const square = x => x * x; |
์ค๊ดํธ ์์ด ๋จ์ผ ํํ์:
1 |
const multiply = (a, b) => a * b; |
์ฌ๋ฌ ๋งค๊ฐ๋ณ์์ ๋ฌธ์ฅ์ ๊ฐ๋ Arrow Functions
์ฌ๋ฌ ๋งค๊ฐ๋ณ์ ์ฒ๋ฆฌํ๊ธฐ
์ฌ๋ฌ ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐ๋ ํจ์์ ๊ฒฝ์ฐ, ๋งค๊ฐ๋ณ์ ๋ชฉ๋ก ์ฃผ์์ ๊ดํธ๊ฐ ํ์์ ๋๋ค.
์์ :
1 |
const subtract = (a, b) => a - b; |
์ฌ๋ฌ ๋ฌธ์ฅ์ ์ํ ์ค๊ดํธ ์ฌ์ฉ
ํจ์ ๋ณธ๋ฌธ์ ๋ ๊ฐ ์ด์์ ๋ฌธ์ฅ์ด ํฌํจ๋ ๊ฒฝ์ฐ, ์ค๊ดํธ๊ฐ ํ์ํ๋ฉฐ ๊ฐ์ ๋ฐํํด์ผ ํ๋ ๊ฒฝ์ฐ ๋ช ์์ ์ธ return ๋ฌธ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์์ :
1 2 3 4 5 6 7 |
const divide = (a, b) => { if (b === 0) { console.error("Division by zero!"); return null; } return a / b; }; |
์ค์ฉ์ ์ธ ์์
๋ง์ ํจ์
์ ํต์ ์ธ ๋ง์ ํจ์๋ฅผ arrow function์ผ๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์ ํต์ ์ธ ํจ์:
1 2 3 |
function add(a, b) { return a + b; } |
Arrow Function ๋ณํ:
1 |
const add = (a, b) => a + b; |
๋จ๊ณ๋ณ ์ค๋ช :
function
ํค์๋ ์ ๊ฑฐ: function ํค์๋๋ฅผ ์๋ตํฉ๋๋ค.- ํ์ดํ ๋ฌธ๋ฒ ๋์ : ๋งค๊ฐ๋ณ์ ๋ชฉ๋ก๊ณผ ํจ์ ๋ณธ๋ฌธ ์ฌ์ด์ ํ์ดํ(=>)๋ฅผ ๋ฐฐ์นํฉ๋๋ค.
- ์์์ ๋ฐํ: ํจ์ ๋ณธ๋ฌธ์ด ๋จ์ผ ํํ์์ด๋ฏ๋ก return ํค์๋๊ฐ ํ์ ์์ต๋๋ค.
์ถ๋ ฅ:
1 |
console.log(add(10, 20)); // Output: 30 |
ํ๋ก์ ํธ ์ฝ๋ (index.js):
1 2 3 4 5 |
// ๋ง์
์ ์ํ Arrow Function const add = (a, b) => a + b; // add ํจ์ ํ
์คํธ console.log(add(10, 20)); // Expected Output: 30 |
์ ๊ณฑ ํจ์
๋ค์์ผ๋ก, ์ซ์๋ฅผ ์ ๊ณฑํ๋ ํจ์๋ฅผ arrow function ํํ๋ก ๋ณํํด๋ณด๊ฒ ์ต๋๋ค.
์ ํต์ ์ธ ํจ์:
1 2 3 |
function square(x) { return x * x; } |
Arrow Function ๋ณํ:
1 |
const square = x => x * x; |
๋ ๊ฐ์ํ:
๋งค๊ฐ๋ณ์๊ฐ ํ๋๋ฟ์ด๋ฏ๋ก ๊ดํธ๋ฅผ ์๋ตํ ์ ์์ต๋๋ค.
์ถ๋ ฅ:
1 |
console.log(square(10)); // Output: 100 |
ํ๋ก์ ํธ ์ฝ๋ (index.js):
1 2 3 4 5 |
// ์ซ์๋ฅผ ์ ๊ณฑํ๊ธฐ ์ํ Arrow Function const square = x => x * x; // square ํจ์ ํ
์คํธ console.log(square(10)); // Expected Output: 100 |
๋น๊ต: ์ ํต์ ์ธ ํจ์ vs. Arrow Functions
ํน์ง | ์ ํต์ ์ธ ํจ์ | Arrow Function |
---|---|---|
๋ฌธ๋ฒ ๊ธธ์ด | ๋ ๊ธธ๋ฉฐ function ํค์๋๊ฐ ํ์ํจ | ๋ ์งง์ผ๋ฉฐ => ๋ฌธ๋ฒ ์ฌ์ฉ |
this ๋ฐ์ธ๋ฉ | ๋์ ์ด๋ฉฐ ํจ์ ํธ์ถ ๋ฐฉ์์ ๋ฐ๋ผ ๋ฌ๋ผ์ง | ์ฃผ๋ณ ์ค์ฝํ์ ๋ ์์ปฌ ๋ฐ์ธ๋ฉ๋จ |
์์์ ๋ฐํ | ๊ฐ์ ๋ฐํํ๋ ค๋ฉด return ํค์๋๊ฐ ํ์ํจ | ํํ์์ ์์์ ์ผ๋ก ๋ฐํํ ์ ์์ |
์์ฑ์ | new์ ํจ๊ป ์์ฑ์๋ก ์ฌ์ฉ ๊ฐ๋ฅ | ์์ฑ์๋ก ์ฌ์ฉํ ์ ์์ |
Arguments ๊ฐ์ฒด | arguments ๊ฐ์ฒด์ ์ ๊ทผ ๊ฐ๋ฅ | arguments ๊ฐ์ฒด๊ฐ ์์ฒด์ ์ผ๋ก ์์ |
์์ ๋น๊ต:
1 2 3 4 5 6 7 |
// ์ ํต์ ์ธ ํจ์ function multiply(a, b) { return a * b; } // Arrow Function const multiply = (a, b) => a * b; |
Arrow Functions์ ์ฌ์ฉํ ๋์ ์ฅ์
Arrow Functions์ ์ฌ์ฉํ ๋
- ์งง์ ํจ์ ํํ: ๋ฐฐ์ด ๋ฉ์๋(map, filter, reduce)์ ๊ฐ์ ๋จ์ํ ์์ ์ ์ด์์ ์ ๋๋ค.
- this ์ปจํ ์คํธ ์ ์ง: ๋ถ๋ชจ ์ค์ฝํ์ this ์ปจํ ์คํธ๋ฅผ ์ ์งํด์ผ ํ ๋ ์ ํฉํฉ๋๋ค.
- ๋ณด์ผ๋ฌํ๋ ์ดํธ ์ฝ๋ ๊ฐ์: ๋ ๊นจ๋ํ๊ณ ๊ฐ๊ฒฐํ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
Arrow Functions์ ์ฌ์ฉํ์ง ์์ ๋
- ๊ฐ์ฒด ๋ฉ์๋: Arrow functions์ ์์ฒด this๋ฅผ ๊ฐ์ง์ง ์์ผ๋ฏ๋ก ๋์ this ๋ฐ์ธ๋ฉ์ ์์กดํ๋ ๊ฐ์ฒด ๋ฉ์๋์๋ ์ ํฉํ์ง ์์ต๋๋ค.
- ์์ฑ์ ํจ์: prototype์ด ์๊ธฐ ๋๋ฌธ์ new ํค์๋์ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ๋์ ์ปจํ ์คํธ ์๊ตฌ ์ํฉ: ๋์ this ๋ฐ์ธ๋ฉ์ด ํ์ํ ์ํฉ.
์์ : ์ ํต์ ์ธ ํจ์๋ฅผ ์ฌ์ฉํ๋ ๊ฐ์ฒด ๋ฉ์๋
1 2 3 4 5 6 7 8 |
const calculator = { number: 10, add(a) { return this.number + a; } }; console.log(calculator.add(5)); // Output: 15 |
๊ฐ์ฒด ๋ฉ์๋์์ Arrow Function์ ์๋ชป ์ฌ์ฉํ ์
1 2 3 4 5 6 |
const calculator = { number: 10, add: (a) => this.number + a // 'this'๊ฐ calculator ๊ฐ์ฒด์ ๋ฐ์ธ๋ฉ๋์ง ์์ }; console.log(calculator.add(5)); // Output: NaN |
๊ฒฐ๋ก
Arrow functions์ JavaScript์์ ์ค์ํ ๋ฐ์ ์ ์๋ฏธํ๋ฉฐ, ๊ฐ๋ฐ์๋ค์๊ฒ ํจ์ ํํ์ ์์ฑํ๋ ๋ณด๋ค ๊ฐ๊ฒฐํ๊ณ ์ง๊ด์ ์ธ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ๋ ์์ปฌ this ์ปจํ ์คํธ๋ฅผ ์ ์งํ๊ณ ๋ณด์ผ๋ฌํ๋ ์ดํธ ์ฝ๋๋ฅผ ์ค์ผ ์ ์๋ ๋ฅ๋ ฅ์ ํ๋ JavaScript ๊ฐ๋ฐ์์ ์ ์ฉํ ๋๊ตฌ๊ฐ ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๋ค์ ํ๊ณ๋ฅผ ์ดํดํ๊ณ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
์ฃผ์ ํฌ์ธํธ:
- Arrow functions์ ํจ์๋ฅผ ์์ฑํ๊ธฐ ์ํ ๊ฐ๊ฒฐํ ๋ฌธ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
- ์ฃผ๋ณ ์ค์ฝํ์์ this ์ปจํ ์คํธ๋ฅผ ์์๋ฐ์ต๋๋ค.
- ์งง๊ณ ๋จ์ผ ๋ชฉ์ ์ ํจ์ ๋ฐ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ ์ด์์ ์ ๋๋ค.
- ๊ฐ์ฒด ๋ฉ์๋๋ ์์ฑ์ ํจ์์๋ ์ ํฉํ์ง ์์ต๋๋ค.
Arrow functions์ ๋์ ํ๋ฉด ๋ ๊นจ๋ํ๊ณ ์ ์ง๋ณด์๊ฐ ์ฉ์ดํ ์ฝ๋๋ก ์ด์ด์ ธ, ์์ฐ์ฑ๊ณผ JavaScript ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ง์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
์ฐธ๊ณ : ์ด ๊ธฐ์ฌ๋ AI์ ์ํด ์์ฑ๋์์ต๋๋ค.