클로저는 함수 실행 후에도 로컬 변수가 사라지지 않고 상태를 유지할 수 있게 하는 기법이다.
function add(){
var sum= 0;
return function(num){
sum +=num;
return sum;
};
}
var result = add();
result(1) ->1 출력
result(2) -> sum은 local변수기 때문에 2가 출력될거 같지만 1+2 = 3 이 출력된다.
클로저는 특정 함수가 다른 함수를 참조하기 때문에 현재 호출 되는 함수가 다른 함수의 메모리 공간을 참조해서 사용한다.
즉시샐행 함수
var result = (function add(){
var sum= 0;
return function(num){
sum +=num;
return sum;
};
})();
함수를 한번 실행하는 것을 목적으로 만든다.
외부에서 함수를 호출하는 코드가 필요 없다는 장점이 있다.
초기화에 많이 사용된다.