[JavaScript] μˆœμˆ˜ν•¨μˆ˜
728x90

μˆœμˆ˜ν•¨μˆ˜

μˆœμˆ˜ν•¨μˆ˜λŠ” μ™ΈλΆ€ μƒνƒœμ— μ˜μ‘΄ν•˜κ±°λ‚˜ λ³€κ²½ν•˜μ§€λ„ μ•ŠλŠ”, μ˜¨μ „νžˆ 독립적인 ν•¨μˆ˜λ₯Ό λ§ν•œλ‹€.

μ—¬κΈ°μ„œ μ™ΈλΆ€μƒνƒœλŠ” μ „μ—­ λ³€μˆ˜λ‚˜ μ„œλ²„ 데이터, DOM λ“±λ“±..

μ•„λž˜μ™€ 같은 κ²½μš°μ— λͺ¨λ‘ ν•΄λ‹Ήν•  λ•Œ μˆœμˆ˜ν•¨μˆ˜λΌκ³  ν•  수 μžˆλ‹€.

  • λ™μΌν•œ μž…λ ₯에 λŒ€ν•΄ λ™μΌν•œ 좜λ ₯을 λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜.
  • μ‚¬μ΄λ“œ μ΄νŽ™νŠΈκ°€ μ—†λŠ” ν•¨μˆ˜

 

같은 μž…λ ₯에 λŒ€ν•΄ 같은 좜λ ₯을 λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜

μˆœμˆ˜ν•¨μˆ˜λŠ” 늘 같은 μž…λ ₯에 λŒ€ν•΄ 같은 좜λ ₯을 λ°˜ν™˜ν•˜κΈ° λ•Œλ¬Έμ—, 인자λ₯Ό 전달받지 μ•ŠλŠ” ν•¨μˆ˜λŠ” 거의 μƒμˆ˜ 같은 λŠλ‚Œ.


μ™ΈλΆ€ μƒνƒœμ— μ˜μ‘΄ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— 늘 같은 좜λ ₯을 ν•œλ‹€.

μ•„λž˜μ™€ 같이 increase() λΌλŠ” ν•¨μˆ˜λ₯Ό λ§Œλ“€μ—ˆμ„ λ•Œ, 이 ν•¨μˆ˜λŠ” μˆœμˆ˜ν•¨μˆ˜λΌκ³  ν•  수 μžˆλ‹€.

function increase(n){
    return ++n;
}
console.log(increase(1)); // 2
console.log(increase(1)); // 2
console.log(increase(1)); // 2

인자 1을 λ„£μ—ˆμ„ λ•Œ 맀번 2둜 같은 값이 좜λ ₯되기 λ•Œλ¬Έμ΄λ‹€.
이런 μ μ—μ„œ μˆœμˆ˜ν•¨μˆ˜λŠ” λΆˆλ³€μ„±μ„ 가진닀고 ν•  수 μžˆλ‹€.

 

 

random() λ©”μ„œλ“œ 같은 κ²½μš°λŠ” μ™ΈλΆ€ μƒνƒœμ— μ˜μ‘΄ν•˜μ§€ μ•Šμ§€λ§Œ, 호좜될 λ•Œλ§ˆλ‹€ 값이 λ³€ν•˜κΈ° λ•Œλ¬Έμ— μˆœμˆ˜ν•¨μˆ˜κ°€ μ•„λ‹ˆλ‹€.

Math.random(); // 0.5628074923287576
Math.random(); // 0.3794844323233928
Math.random(); // 0.33897324277365715

 

 

μ‚¬μ΄λ“œ μ΄νŽ™νŠΈκ°€ μ—†λŠ” ν•¨μˆ˜

μ‚¬μ΄λ“œ μ΄νŽ™νŠΈ? πŸ€”

ν•¨μˆ˜μ—μ„œ 값을 λ°˜ν™˜ν•˜λŠ” 일 외에 ν•¨μˆ˜ μ™ΈλΆ€μ˜ μƒνƒœλ‚˜ λ³€μˆ˜λ₯Ό λ³€κ²½ν•˜κ±°λ‚˜ λ‹€λ₯Έ 일을 μˆ˜ν–‰ν•˜λŠ” 것을 λ§ν•œλ‹€.
비동기 처리, μ‚¬μš©μžμ˜ μž…λ ₯μ΄λ‚˜ λ°μ΄ν„°μ˜ λ³€κ²½, 화면을 κ·Έλ¦¬λŠ” μž‘μ—… λ“±λ“±

 

μˆœμˆ˜ν•¨μˆ˜λŠ” 인자λ₯Ό ν†΅ν•΄μ„œ λ‚΄λΆ€μ μœΌλ‘œ μƒνƒœλ₯Ό λ³€ν™˜μ‹œμΌœ 좜λ ₯ν•˜κΈ° λ•Œλ¬Έμ— μ‚¬μ΄λ“œ μ΄νŽ™νŠΈκ°€ μΌμ–΄λ‚˜μ§€ μ•ŠλŠ”λ‹€.

 

 

μˆœμˆ˜ν•¨μˆ˜μ˜ μž₯점

  • μ•ˆμ •μ„±

μ‹€ν–‰ μ‹œμ κ³Ό 상관없이 늘 λ™μΌν•œ κ²°κ³Όλ₯Ό λ§Œλ“€μ–΄ λ‚΄κΈ° λ•Œλ¬Έμ— μ˜ˆμΈ‘ν•  수 μ—†λŠ” κ²°κ³Όκ°€ λ‚˜μ˜¬ μš°λ €κ°€ μ—†λ‹€.
비동기적인 μƒν™©μ΄λ‚˜, λ‹€λ₯Έ μƒν™©μ—μ„œλ„ λΉ„μˆœμˆ˜ ν•¨μˆ˜μ— λΉ„ν•΄μ„œ μ’€ 더 μ•ˆμ „ν•˜λ‹€κ³  ν•  수 μžˆλ‹€.

 

  • μ‘°ν•©μ„±

μœ„μ™€ λ”λΆˆμ–΄μ„œ, 늘 μ˜ˆμΈ‘ν•  수 μžˆλŠ” 결과이기 λ•Œλ¬Έμ— λ‹€λ₯Έ ν•¨μˆ˜λ“€κ³Ό μ‘°ν•©ν•˜μ—¬ μž¬μ‚¬μš©ν•˜κΈ°κ°€ μ’‹λ‹€.
또 λŒ€μ²΄λ‘œ ν•˜λ‚˜μ˜ κΈ°λŠ₯에 μΆ©μ‹€ν•˜κΈ° λ•Œλ¬Έμ— μœ μ§€λ³΄μˆ˜μ μΈ λ©΄μ—μ„œλ„ μ’‹λ‹€.

 

  • 가독성

μ‚¬μ΄λ“œ μ΄νŽ™νŠΈλ₯Ό μ§€μ–‘ν•˜κ³  ν•¨μˆ˜μ˜ λ³΅μž‘μ„±μ„ λ–¨μ–΄λœ¨λ¦¬κΈ° λ•Œλ¬Έμ— μ½”λ“œλ₯Ό μ‰½κ²Œ νŒŒμ•…ν•  수 μžˆλ‹€λŠ” μž₯점이 μžˆλ‹€.

 

 

κ²°κ΅­ 순수 ν•¨μˆ˜λŠ” μ‚¬μ΄λ“œ μ΄νŽ™νŠΈλ₯Ό μ΅œλŒ€ν•œ μ§€μ–‘ν•˜λ©΄μ„œ λΆˆλ³€μ„±μ„ μœ μ§€ν•˜κ³ , λ°œμƒν•  수 μžˆλŠ” 였λ₯˜λ₯Ό 미연에 λ°©μ§€ν•˜μ—¬ μ•ˆμ •μ„±μ„ 높이기 μœ„ν•œ ν•¨μˆ˜λΌκ³  ν•  수 μžˆμ„ 것 κ°™λ‹€.

 

 

좜처

λͺ¨λ˜ μžλ°”μŠ€ν¬λ¦½νŠΈ λ”₯λ‹€μ΄λΈŒ
https://seonhyungjo.github.io/Javascript-Book/basic/15-Pure-Functions-Side-Effects-State-Mutation.html

728x90