Please Enable JavaScript!
Mohon Aktifkan Javascript![ Enable JavaScript ]

[Javascript] 클로저(Closure)

2016. 4. 12. 13:19카테고리 없음

728x90

클로저란? 
함수 내부에 만든 지역변수가 사라지지 않고 계속해서 값을 유지하고 있는 상태를 말합니다.

function 외부(){
var 변수;
function 내부(){
     변수 사용;
}
}

function Sum(){
     var num = 0;
     function AddSum(){
          num++;
          return num;
     }
     return AddSum;
}
var test = Sum();

alert(test());
alert(test());
alert(test());

출력
1
2
3




function cTest(a) {
  return function(b) {
    return a + b;
  }
}

var test = cTest(1);
alert(test(2));

출력
3

클로저의 참조를 제거하고 GC(Garbage Collection)하려면  명시적으로 test=null; 해야합니다.


클로저를 사용하면 좋은 점?
연관 있는 변수와 기능(중첩 함수)을 하나의 함수로 묶어 독립적으로 실행시킬 수가 있습니다.
함수 내부에 데이터가 만들어지기 때문에 함수 외부에서 수정할 수 없는 보호된 데이터를 만들 수 있습니다.
(객체지향  프로그래밍에서 private 데이터 라고 함.)

728x90