JavaScript

[JavaScript] 읡λͺ… CallBack ν•¨μˆ˜ 직접 μ •μ˜λ₯Ό μ‚¬μš©ν•˜λŠ” 이유 μ•Œμ•„λ³΄κΈ°

joheamin 2025. 1. 24. 13:15

πŸ€” CallBack ν•¨μˆ˜κ°€ 뭘까?

μžλ°” μŠ€ν¬λ¦½νŠΈμ—μ„œλŠ” μ„ μ–Έν•¨μˆ˜ λ˜λŠ” 읡λͺ…ν•¨μˆ˜λ₯Ό 인자둜 λ°›μ•„

ν˜ΈμΆœν•œ ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ 인자둜 전달받은 ν•¨μˆ˜λ₯Ό 호좜(Callback) ν•  수 μžˆλ‹€.

 

κ°„λ‹¨ν•˜κ²Œ μ˜ˆμ‹œλ₯Ό λ“€μ–΄λ³΄μž.

 

  <script>
   //μ‚¬λžŒμ˜ λ™μž‘(movement)을 μ œμ–΄
    function person(movement, clock) {
      document.write(`λ‚˜λŠ” μ§€κΈˆ `);
      movement(clock);
    }
     //λ°₯ λ¨ΉλŠ” λ™μž‘
    function eat(clock) {
      document.write(`${clock}μ‹œμ— λ°₯ λ¨ΉλŠ”μ€‘μ΄λ‹€`);
    }
        //3μ‹œμ— λ°₯ λ¨Ήκ³  μ‹Άλ‹€
    person(eat, 3);

 

πŸ‘‰ μ‚¬λžŒμ˜ λ™μž‘μ„ μ‹€ν–‰ν•˜λŠ” ν•¨μˆ˜μ— λ™μž‘ ν•¨μˆ˜λ₯Ό 인자둜 전달받아 call ν•˜λŠ” 것이닀.


❓그렇닀면 읡λͺ… CallBack ν•¨μˆ˜λ₯Ό 직접 μ •μ˜ν•œλ‹€λŠ”κ±΄?

이미 λ§Œλ“€μ–΄μ Έ μžˆλŠ” 일반 ν•¨μˆ˜λ₯Ό 인자둜 μ£ΌλŠ” 것이 μ•„λ‹Œ 

읡λͺ…ν•¨μˆ˜λ‘œ 직접 μž‘μ„±ν•œ μ½”λ“œλ₯Ό 인자둜 λ„£μ–΄μ£ΌλŠ”κ²ƒμ΄λ‹€.

 

κ·Έλ ‡λ‹€λ©΄ ν•œλ²ˆ 예제λ₯Ό 봐보겠닀.

    //μ‚¬λžŒμ˜ λ™μž‘(movement)을 μ œμ–΄
    function person(movement, clock) {
      document.write(`λ‚˜λŠ” μ§€κΈˆ `);
      movement(clock);
    }

πŸ‘† μœ„ ν•¨μˆ˜λŠ” μ‚¬λžŒμ˜ λ™μž‘μ„ μ œμ–΄ν•˜λŠ” ν•¨μˆ˜μ΄λ©° λ™μž‘μ„ 인자둜 λ°›λŠ”λ‹€.

 

그런데 κ°‘μžκΈ° μ‹ λ‚˜μ„œ λ‚΄ 기뢄을 ν‘œμ‹œν•˜κ³  μ‹Άμ–΄μ‘Œλ‹€!

 

κ·ΈλŸ¬λ‚˜ μ›λž˜ 기뢄이 μ’‹λ‹€ λŠ” λ™μž‘μ΄λΌκ³  ν•˜κΈ° μ• λ§€ν•˜λ©°, μž¬μ‚¬μš©ν•  일도 μ—†κΈ°λ•Œλ¬Έμ— 

λ”°λ‘œ ν•¨μˆ˜λ‘œ λ§Œλ“€κΈ°λ„ μ• λ§€ν•˜λ‹€.

 

이럴 λ•Œ κ·Έλƒ₯ μ¦‰μ„μœΌλ‘œ λ§Œλ“€μ–΄μ„œ μ‚¬μš©ν•  수 μžˆλ„λ‘ 읡λͺ…ν•¨μˆ˜λ‘œ 직접 μ½”λ“œλ₯Ό μ“Έ 수 μžˆλ‹€.

 

    person(function (mood) {
      document.write(mood);
    }, "μ‹ λ‚œλ‹€");

πŸ‘‰ 인자둜 λ“€μ–΄κ°ˆ ν•¨μˆ˜μ— 읡λͺ…μœΌλ‘œ ν•˜μ—¬ λ‚΄ 기뢄을 ν‘œμ‹œν•˜λŠ” ν•¨μˆ˜λ₯Ό μž…λ ₯ν•œλ‹€.

 

μ΄λ ‡κ²Œ 되면 ꡳ이 관련이 μ—†λŠ” μƒˆλ‘œμš΄ ν–‰μœ„λ₯Ό 읡λͺ… ν•¨μˆ˜ 직접 μ •μ˜λ₯Ό 톡해

μ¦‰μ„μœΌλ‘œ κ°„λ‹¨ν•˜κ²Œ 좜λ ₯ν•  수 μžˆλ‹€.

 


πŸ€” μ‹€μ œλ‘œ 어디에 많이 μ‚¬μš©μ΄ 될까?

μ—¬λŸ¬ μš©λ„λ‘œ 많이 μ‚¬μš©λ˜μ§€λ§Œ 특히 이벀트 ν•Έλ“€λŸ¬μ— 많이 μ‚¬μš©λœλ‹€.

 

λ²„νŠΌμ„ λˆŒλ €μ„ λ•Œ 기쑴에 λ§Œλ“€μ–΄μ Έμžˆλ˜ μ΄λ²€νŠΈκ°€ μ•„λ‹Œ μƒˆλ‘œμš΄ μ΄λ²€νŠΈλ“€μ΄ μ‹€ν–‰ λ˜κΈΈλ°”λž„λ•Œ,

κ·Έ μƒˆλ‘œμš΄ 이벀트λ₯Ό λ‹€λ₯Έ κ³³μ—μ„œ μž¬ν™œμš©ν•˜λŠ” 것이 μ•„λ‹Œ ν•œλ²ˆ μ“°κ³  λ²„λ €μ„œ ꡳ이 ν•¨μˆ˜λ‘œ μ •μ˜ν•˜κΈ° μ• λ§€ν•  λ•Œ,

 

κ·ΈλŸ¬ν•œ 뢀뢄은 인자둜 직접 읡λͺ…μœΌλ‘œ μ •μ˜λœ μ½”λ“œλ₯Ό λ„£μ–΄ μ“°κ³  λ²„λ¦¬λ©΄λœλ‹€.