yeon
yeon I am a Korean web programmer with bboy dancing as a hobby. :)

Javascript Closure

Javascript Closure

Javascript Closure

클로저란? 클로저는 함수와 함수가 선언된 어휘적 환경의 조합이다. 참고: MDN Closure


환경이란 변수들이 포함된 context를 말한다고 한다.

클로저 생성

  1. 내부함수가 외부함수 변수를 사용할때.
    1
    2
    3
    4
    5
    6
    
    function outer() {
     var x = 1;
     function inner() {
         console.log(x); // 1
     }
    }
    
  2. 익명의 내부함수가 외부함수의 리턴값으로 사용될때.
    1
    2
    3
    4
    5
    
    function outer() {
     return function inner() {
         console.log('inner');
     }
    }
    
  3. 내부함수가 외부함수 실행환경에서 실행될때.
    1
    2
    3
    4
    5
    6
    7
    
    function outer() {
     function inner() {
         console.log('inner');
     }
    
     inner();
    }
    

스코프 객체 체인 클로저

외부함수의 변수를 사용하는 내부함수가 사용되는 경우, 외부함수가 종료되더라도 내부함수에서 외부함수 변수 사용

1
2
3
4
5
6
7
8
9
function outer() {
    var x = 1;
    return function inner() {
        console.log(x);
    }
}

var fn = outer();
fn(); // 1




comments powered by Disqus