πŸ€·πŸ»β€β™€οΈ κ³ μ°¨ν•¨μˆ˜? 콜백?

λ‚˜μΏ ν¬Β·2023λ…„ 1μ›” 7일
0
post-thumbnail

κ³ μ°¨ν•¨μˆ˜

κ³ μ°¨ν•¨μˆ˜λž€? ν•¨μˆ˜λ₯Ό 인자(argument)둜 받을 수 있고, ν•¨μˆ˜μ˜ ν˜•νƒœλ‘œ 리턴할 수 μžˆλŠ” ν•¨μˆ˜

κ³ μ°¨ ν•¨μˆ˜λŠ” ν•¨μˆ˜λ₯Ό 인자둜 μ „λ‹¬λ°›κ±°λ‚˜ ν•¨μˆ˜λ₯Ό 결과둜 λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜λ₯Ό λ§ν•œλ‹€.
κ³ μ°¨ν•¨μˆ˜λŠ” 인자둜 받은 ν•¨μˆ˜λ₯Ό ν•„μš”ν•œ μ‹œμ μ— ν˜ΈμΆœν•˜κ±°λ‚˜ ν΄λ‘œμ €λ₯Ό μƒμ„±ν•˜μ—¬ λ°˜ν™˜ν•œλ‹€.
μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ ν•¨μˆ˜λŠ” 일급 κ°μ²΄μ΄λ―€λ‘œ κ°’μ²˜λŸΌ 인자둜 전달할 수 있으며 λ°˜ν™˜ν•  μˆ˜λ„ μžˆλ‹€.


πŸ’‘ 인자(argument)λž€? - μ–΄λ–€ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν• λ•Œ, 호좜문의 ( )μ•ˆμ— λ“€μ–΄κ°€λŠ” μ–΄λ–€ κ°’μ΄λ‚˜ λ³€μˆ˜

πŸ’‘ λ§€κ°œλ³€μˆ˜λž€?

  • ν•¨μˆ˜λ₯Ό μ •μ˜ν•˜λ©΄μ„œ κ·Έ μ „λ‹¬λœ 인자λ₯Ό λ°›μ•„λ“€μ΄λŠ” λ³€μˆ˜

❗️ μΈμžμ™€ λ§€κ°œλ³€μˆ˜ μ˜ˆμ‹œ

function doubleNum(num) {
  let result = num * 2
  return result
}

doubleNum(2);

βœ… μΈμžλŠ” => 숫자 2 / λ§€κ°œλ³€μˆ˜λŠ” => num



❗️ κ³ μ°¨ν•¨μˆ˜ μ˜ˆμ‹œ

  • λ‹€λ₯Έ ν•¨μˆ˜λ₯Ό 인자둜 λ°›λŠ” 경우
function back(num) {
  return num * 2;
}

function doubleNum(func, num) {
  return func(num);
}

doubleNum(back, 5);

βœ… λ‹€λ₯Έ ν•¨μˆ˜λ₯Ό 인자둜 λ°›κ³  μžˆλŠ” doubleNum은 κ³ μ°¨ν•¨μˆ˜μž„
βœ… funcλŠ” doubleNum의 μ½œλ°±ν•¨μˆ˜μž„
βœ… back은 doubleNum의 μ½œλ°±ν•¨μˆ˜μž„




μ½œλ°±ν•¨μˆ˜

μ½œλ°±ν•¨μˆ˜λž€? λ‹€λ₯Έ ν•¨μˆ˜μ˜ 인자둜 μ „λ‹¬λ˜λŠ” ν•¨μˆ˜
μ–΄λ–€ μž‘μ—…μ΄ μ™„λ£Œλ˜μ—ˆμ„ λ•Œ ν˜ΈμΆœν•˜λŠ” κ²½μš°κ°€ λ§Žμ•„ 지어진 이름

μ½œλ°±ν•¨μˆ˜λž€? 순차적으둜 ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•˜κ³  싢을 λ•Œ μ‚¬μš©
μ½œλ°±ν•¨μˆ˜λŠ” κ·Έλƒ₯ ν•¨μˆ˜ λ””μžμΈ νŒ¨ν„΄μΌ 뿐
동기, λΉ„λ™κΈ°μ™€λŠ” 쑰금 닀름


❗️ μ½œλ°±ν•¨μˆ˜ μ˜ˆμ‹œ (1)

function μ²«μ§Έν•¨μˆ˜(ꡬ멍) {
  console.log(1);
  ꡬ멍();
}

function λ‘˜μ§Έν•¨μˆ˜() {
  console.log(2);
}

μ²«μ§Έν•¨μˆ˜(λ‘˜μ§Έν•¨μˆ˜);
//consoleμ—λŠ” 1 2 κ°€ 순차적으둜 찍힘

❗️ μ½œλ°±ν•¨μˆ˜ μ˜ˆμ‹œ (2)

function μ²«μ§Έν•¨μˆ˜(ꡬ멍) {
  console.log(1);
  ꡬ멍();
}

function λ‘˜μ§Έν•¨μˆ˜() {
  console.log(2);
}

μ²«μ§Έν•¨μˆ˜(function(){
  λ‘˜μ§Έν•¨μˆ˜(function(){
    μ…‹μ§Έν•¨μˆ˜(function(){
    
    });
  });
});

νŒ¨ν„΄μ˜ ν•œκ³„λ•Œλ¬Έμ— 콜백 지μ˜₯이 생김.

πŸ’‘ 가독성 λ–¨μ–΄μ§€λŠ” μ½œλ°±ν•¨μˆ˜μ˜ 문제점 => 더 μ‰½κ²Œ μ“°κΈ°μœ„ν•œ Promise ν•¨μˆ˜

0개의 λŒ“κΈ€