타쿠꺼

클로저 본문

Javascript/Study

클로저

kimtaku 2016. 6. 1. 18:51

1
2
3
4
5
6
7
8
9
10
11
12
function outFunc() {
    var innerVar = 1;
    
    var innerFunc = function() {
        console.log(innerVar);
    };
    
    return innerFunc;
}
 
var foo = outFunc();
foo(); // 1
cs


위와 같이 생명주기가 끝난 함수를 참조하는 내부함수(innerFunc)을 클로저라고 한다.

innerFunc의 외부함수인 outFunc의 변수도 참조할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function outFunc(bar) {
    
    var innerFunc = function(var1, var2) {
        var sum = bar + (var1 - var2);
        return sum;
    };
    
    return innerFunc;
}
 
var foo1 = outFunc(5);
var foo2 = outFunc(4);
 
var sum1 = foo1(32);
var sum2 = foo2(32);
 
console.log(sum1); // 6
console.log(sum2); // 5
cs


또한 위처럼 생명주기가 끝난 함수의 내부변수들에 대한 쓰기까지 가능하다.

그리고 outFunc은 마치 공장처럼 여러 bar변수를 가진 함수를 만들어낼 수 있다.


'Javascript > Study' 카테고리의 다른 글

multi-line string  (0) 2016.06.14
bubbling, capturing  (0) 2016.06.10
코드의 실행 과정  (0) 2016.06.01
동적스코프, 정적스코프  (0) 2016.06.01
난수 만들기  (0) 2016.05.31
Comments