함수 반환하기
함수는 객체이기 때문에 반환 값으로 사용될 수 있다.
var setup = function(){
console.log(1);
return function(){ // => 클로저 함수
console.log(2);
}
}
// setup 함수를 사용
var my = setup(); // console 1 출력
my(); // 2출력
setup()은 반환된 함수를 감싸고 있기 때문에 클로저를 생성한다. 클로저는 반환되는 함수에서는 접근할 수 있지만 코드 외부에서는 접근할 수 없기 때문에 비공개 데이터 저장을 위해 사용할 수 있다. 카운터를 예제로 들 수 있다.
** 클로저는 함수 내에서 함수를 정의하고 사용하는 함수를 가르킨다.
var setup = function(){
var count = 0;
return function(){
return (count += 1);
}
}
// 사용방법
var next = setup();
console.log(next()); // 1
console.log(next()); // 2
console.log(next()); // 3