πŸ›  JavaScript Essential - 3. ν•¨μˆ˜

이좘길·2021λ…„ 10μ›” 29일
0
post-thumbnail

πŸ±β€πŸ λͺ©ν‘œ

  • JavaScriptμ—μ„œ μ‚¬μš©λ˜λŠ” ν•¨μˆ˜ ν˜•νƒœλ₯Ό μ•Œμ•„λ³Ό 수 μžˆλ‹€.

πŸ“Œ 1. κΈ°λ³Έν˜• ν•¨μˆ˜ & ν•¨μˆ˜ μ •μ˜

  • μ½”λ“œλ₯Ό ν™œμš©ν•˜κΈ° μœ„ν•œ 묢음
  • ν•¨μˆ˜ ν‘œν˜„μ‹ : λŸ°νƒ€μž„ μ‹œ, ν˜Έμ΄μŠ€νŒ…μœΌλ‘œ 인해, μ½”λ“œ 싀행전에 λ‘œλ“œλœλ‹€.
  • ν•¨μˆ˜ 선언식 : λ³€μˆ˜ ν˜•νƒœλ‘œ μ €μž₯λ˜μ–΄, μ½”λ“œκ°€ 라인에 μ ‘κ·Ό μ‹œ, λ‘œλ“œλœλ‹€.
function myFn(x) {} // ν•¨μˆ˜ ν‘œν˜„μ‹
const myFnV2 = function () {} // ν•¨μˆ˜ 선언식

πŸ“Œ 2. λ‹€μ–‘ν•œ JavaScript ν•¨μˆ˜

1) 읡λͺ… ν•¨μˆ˜ (Anonymous function)

  • μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” ν•¨μˆ˜λ₯Ό κ°’μœΌλ‘œ μ·¨κΈ‰ν•  수 μžˆλ‹€.
  • λ³€μˆ˜μ— λ„£μ–΄μ„œ μ‚¬μš©ν•˜λŠ” ν•¨μˆ˜
const myFn = function () {
 return 100;
}

2) μ¦‰μ‹œ μ‹€ν–‰ ν•¨μˆ˜ (IIFE: Immediately invoked function expression)

  • ν•¨μˆ˜ 생성 ν›„, λ°”λ‘œ μ‹€ν–‰
  • ν•œλ²ˆλ§Œ μ‹€ν–‰ν•  수 μžˆλŠ” ν•¨μˆ˜
  • ES5 λͺ¨λ“ˆ
(function() {
  console.log('μ¦‰μ‹œ μ‹€ν–‰ ν•¨μˆ˜ μ‹€ν–‰!');
})();

3) μΈμžμ— λ”°λ₯Έ 호좜 방법

  • μžλ°”μŠ€ν¬λ¦½νŠΈ μ„ μ–Έλ˜μ§€ μ•Šμ€ μΈμžλ„ 호좜 λΆ€λΆ„μ—μ„œ λ„˜κΈΈ 수 μžˆλ‹€.
const myFn = function (a, b) {
  return 100;
}
const arr = [10,20,30];

myFn(10, 20, 30); // (1)
myFn.call(null, 10,20,30); // (2)
myFn.apply(null, arr); // (3)
  • (1) 일반적인 호좜 방법
  • (2) fn.call(context, args);
  • (3) fn.apply(context, [...args]);

4) κ°€λ³€ ν•¨μˆ˜ (Argument function)

  • 인자둜 μ„ μ–Έλ˜μ§€ μ•Šμ€ 인자λ₯Ό λ°›κΈ° μœ„ν•¨
  • arguments ν˜•νƒœλ‘œ μ‚¬μš©λ¨
  • ν•˜μœ„ μ˜ˆμ œλŠ” Best Practice
function sum(a,b, ...args) {}

5) ν™”μ‚΄ν‘œ ν•¨μˆ˜ (Arrow function)

  • 읡λͺ… ν•¨μˆ˜ ν˜•νƒœλ‘œ μ‚¬μš©λ¨
  • context, prototype λΆ€λΆ„μ—μ„œ 일반 ν•¨μˆ˜μ™€ 차이λ₯Ό λ³΄μž„
const myFn = () => 'success !!!';

6) 생성기 ν•¨μˆ˜ (Generator function)

  • κΈ°μ‘΄ ν•¨μˆ˜ : μ„ μ–Έ, 호좜둜 λ™μž‘ 끝
  • 생성기 ν•¨μˆ˜ : μ„ μ–Έ, μ€€λΉ„, μ‹€ν–‰, 정지
function* gen() {
  yield 10;
  yield 20;
  return 30;
} // (1) μ„ μ–Έ

const g = gen(); // (2) μ€€λΉ„

g.next(); // 3-1) μ‹€ν–‰: 10
g.next(); // 3-2) μ‹€ν–‰: 20
g.next(); // 4) 정지: 30

7) 비동기 ν•¨μˆ˜ (Asychronous function)

  • Promise ν˜•νƒœκ°€ μ„ ν–‰ ν•™μŠ΅μ΄ λ˜μ–΄μ•Ό 함
  • Promise ν˜•νƒœλ₯Ό async / await둜 처리
async function myTask() {}

μ°Έκ³ 

패슀트캠퍼슀 κΉ€λ―Όνƒœμ˜ ν”„λ‘ νŠΈμ—”λ“œ 아카데미

profile
일지λ₯Ό κΎΈμ€€νžˆ μž‘μ„±ν•˜μž.

0개의 λŒ“κΈ€