λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

πŸ“š/γ„΄ JavaScript

[JavaScript] ν΄λ‘œμ €(Closure)λž€?

πŸ”— ν΄λ‘œμ €(Closure)λž€?

 

 

 μΌλ°˜μ μΈ ν•¨μˆ˜μ˜ 경우 ν•¨μˆ˜ ν˜ΈμΆœμ— μ˜ν•΄ ν•¨μˆ˜ λ‚΄λΆ€μ˜ 싀행ꡬ문을 λͺ¨λ‘ μ‹€ν–‰ν•˜κ²Œ 되면 ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ λ§Œλ“  지역 λ³€μˆ˜κ°€ μžλ™μœΌλ‘œ μ‚¬λΌμ§€μ§€λ§Œ, μ–΄λ–€ κ²½μš°μ—λŠ” 사라지지 μ•Šκ³  λ‚¨λŠ” κ²½μš°κ°€ μžˆλŠ”λ° μ΄λŸ¬ν•œ ν˜„μƒμ„ ν΄λ‘œμ €λΌκ³  ν•œλ‹€.

 ν΄λ‘œμ €λŠ” μžλ°” μŠ€ν¬λ¦½νŠΈμ—μ„œ 쀑첩 ν•¨μˆ˜μ™€ 비동기 방식을 μ‚¬μš©ν•˜μ—¬ κ°€λŠ₯ν•œλ°, 호좜된 ν•¨μˆ˜ λ‚΄μ—μ„œ μ™ΈλΆ€λ‘œ μ΄λ™ν•˜λŠ” λ³€μˆ˜κ°€ 있으면 ν΄λ‘œμ € ν•¨μˆ˜κ°€ λ™μž‘ν•œλ‹€.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
// ν•¨μˆ˜ μ„ μ–Έ
function createCount(){
    var count = 0// λ³€μˆ˜ μ„ μ–Έ // 3 β˜…λ³€μˆ˜κ°€ 사라지지 μ•Šκ³  λ‚¨μŒ 🧟‍β™€οΈβ˜…
    // 쀑첩 ν•¨μˆ˜ // 4 λ‹€μ‹œ 살아남
    function addCount(){
        count++// μ²˜λ¦¬
        return count; // μΆœλ ₯ // 1 countλ₯Ό λ°˜ν™˜
    } // 2 μ’…λ£Œ
    return addCount;
}
 
// ν•¨μˆ˜ 
var counter = createCount(); // 2 countλ₯Ό λ„˜κ²¨ λ°›μŒ
cs

 

 

πŸ”— ν΄λ‘œμ € ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” 이유

 

  1. ν•¨μˆ˜κ°€ 생성됐을 λ•Œμ˜ μžμ‹ μ˜ μƒνƒœλ₯Ό κΈ°μ–΅ν•˜κ³  λ³€κ²½λœ μ΅œμ‹ μƒνƒœλ₯Ό μœ μ§€ν•  수 μžˆλ‹€.
  2. μ „μ—­ λ³€μˆ˜μ˜ μ‚¬μš©μ„ μ΅œμ†Œν™”ν•œλ‹€.
  3. μ—°κ΄€ μžˆλŠ” λ³€μˆ˜μ™€ κΈ°λŠ₯을 ν•˜λ‚˜μ˜ ν•¨μˆ˜λ‘œ λ¬Άμ–΄ λ…λ¦½μ μœΌλ‘œ μ—¬λŸ¬κ°œλ₯Ό μ‹€ν–‰ μ‹œν‚¬ 수 μžˆλ‹€.
  4. ν•¨μˆ˜ 내뢀에 데이터가 λ§Œλ“€μ–΄μ§€κΈ° λ•Œλ¬Έμ— ν•¨μˆ˜ μ™ΈλΆ€μ—μ„œ μˆ˜μ •ν•  수 μ—†λŠ” 보호된 데이터λ₯Ό λ§Œλ“€ 수 μžˆλ‹€. (정보λ₯Ό 은닉할 수 μžˆλ‹€.)

πŸ”Ž μ°Έκ³  자료

πŸ’‘ 같이 λ³΄λ©΄ 쒋을 Post

 

[JavaScript / 비동기 처리] AJAX / Callback, Promise, async, await

πŸ“Œ λ™κΈ°(Synchronous) ν”„λ‘œκ·Έλž˜λ° vs 비동기(Asynchronous) ν”„λ‘œκ·Έλž˜λ°  λ™κΈ° ν”„λ‘œκ·Έλž˜λ°μ€ μ½”λ“œκ°€ λ°˜λ“œμ‹œ μž‘μ„±λœ μˆœμ„œλŒ€λ‘œ μ‹€ν–‰λ˜λŠ” 방식이닀.  λΉ„동기 ν”„λ‘œκ·Έλž˜λ°μ€ μ½”λ“œμ˜ μ²˜λ¦¬κ°€ μ™„λ£Œλ  λ•ŒκΉŒ

devjindev.tistory.com