Closure

μ΄λ²ˆμ—” ν΄λ‘œμ €μ— λŒ€ν•΄ 곡뢀해보렀 ν•œλ‹€.

ν΄λ‘œμ €λž€ ν•¨μˆ˜κ°€ 생성될 λ‹Ήμ‹œμ˜ ν™˜κ²½μ„ κΈ°μ–΅ν•˜λŠ” 것을 μ˜λ―Έν•œλ‹€.

μ—¬κΈ°μ„œ μ–ΈκΈ‰λœ ν•¨μˆ˜λΌλŠ” λ‹¨μ–΄λŠ” ν•¨μˆ˜ μ•ˆμ˜ ν•¨μˆ˜μΈ λ‚΄λΆ€ν•¨μˆ˜λ₯Ό μ˜λ―Έν•œλ‹€.

function test(){
    const a = 1;
    return function closure(){
        console.log(a);
    }
}
test() // 1;

μœ„ μ½”λ“œλ₯Ό 보면 testλΌλŠ” ν•¨μˆ˜λŠ” μ‹€ν–‰ν•œ λ’€ μ½œμŠ€νƒμ—μ„œ 제거되기 λ•Œλ¬Έμ— μ•ˆμ—μ„œ μ„ μ–Έν•œ λ³€μˆ˜ a에 μ ‘κ·Όν•  방법이 μ—†λ‹€.

ν•˜μ§€λ§Œ testλ₯Ό μ‹€ν–‰ν•˜κ²Œ 되면 λ³€μˆ˜ a의 값인 1이 κ·ΈλŒ€λ‘œ 좜λ ₯이 λ˜λŠ”κ²ƒμ„ 확인할 수 μžˆλ‹€.

이처럼 ν•¨μˆ˜κ°€ 생성될 λ‹Ήμ‹œμ˜ μƒμœ„ μŠ€μ½”ν”„ λ³€μˆ˜ a의 값을 κΈ°μ–΅ν•˜λŠ” 것을 ν΄λ‘œμ €λΌκ³  ν•œλ‹€.

Last updated