πŸ”„ 콜백 ν•¨μˆ˜(Callback Function)λž€?

🧩 μ •μ˜

콜백 ν•¨μˆ˜λž€ **β€œμ–΄λ–€ 일이 λλ‚œ ν›„ λ‹€μ‹œ λΆˆλŸ¬μ„œ μ‹€ν–‰ν•  ν•¨μˆ˜β€**μž…λ‹ˆλ‹€.

μ‰½κ²Œ 말해, **"ν•¨μˆ˜λ₯Ό 인자둜 μ „λ‹¬ν•΄μ„œ, λ‚˜μ€‘μ— 호좜되게 ν•˜λŠ” ν•¨μˆ˜"**μž…λ‹ˆλ‹€.

🎯 μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ λ‹€ν˜•μ„±(λ™μΌν•œ μ΄λ¦„μ˜ ν•¨μˆ˜κ°€ λ‹€μ–‘ν•œ λ°©μ‹μœΌλ‘œ λ™μž‘ν•˜λŠ” 것)을 κ΅¬ν˜„ν•˜λŠ” λŒ€ν‘œμ μΈ λ°©λ²•μž…λ‹ˆλ‹€.


β˜• μ‹€μƒν™œ λΉ„μœ 

πŸ“¦ 택배 μ˜ˆμ‹œ

택배λ₯Ό μ‹œν‚€κ³  λ‚˜λ©΄, λ„μ°©ν–ˆμ„ λ•Œ 문자λ₯Ό 보내달라고 μš”μ²­ν•˜μ£ ?

μ΄λ•Œ "문자λ₯Ό λ³΄λ‚΄λŠ” 일"이 콜백 ν•¨μˆ˜μž…λ‹ˆλ‹€.

"도착"μ΄λΌλŠ” 쑰건이 만쑱되면 κ·Έλ•Œ μ½œλ°±μ„ μ‹€ν–‰ν•˜λŠ” κ²λ‹ˆλ‹€!


πŸ› οΈ 콜백 ν•¨μˆ˜ μ˜ˆμ‹œ

function greet(name, callback) {
  console.log("μ•ˆλ…•ν•˜μ„Έμš”, " + name + "λ‹˜!");
  callback();
}

function afterGreeting() {
  console.log("쒋은 ν•˜λ£¨ λ˜μ„Έμš”!");
}

greet("이상쀀", afterGreeting);

// κ²°κ³Ό:
// μ•ˆλ…•ν•˜μ„Έμš”, μ΄μƒμ€€λ‹˜!
// 쒋은 ν•˜λ£¨ λ˜μ„Έμš”!


πŸ” κ³ μ°¨ ν•¨μˆ˜(High-Order Function)

κ³ μ°¨ ν•¨μˆ˜λž€:

ν•¨μˆ˜λ₯Ό 인자둜 λ°›κ±°λ‚˜, ν•¨μˆ˜λ₯Ό λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜

즉, 콜백 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” ν•¨μˆ˜λŠ” κ³ μ°¨ ν•¨μˆ˜μž…λ‹ˆλ‹€.

function repeat(n, callback) {
  for (let i = 0; i < n; i++) {
    callback(i);
  }
}

repeat(3, i => {
  console.log(i + "번째 λ°˜λ³΅μž…λ‹ˆλ‹€.");
});


βœ… 콜백 ν•¨μˆ˜μ˜ μž₯점