함수 내부에서 생성한 데이터와 그 유효범위로 인해 발생하는 특수한 현상/상태
function setCounter() {
var count2 = 0;
return function() {
return ++count2;
}
}
var count1 = setCounter();
count1();
클로져의 특성을 이용하여 javascript에서도 private한 변수를 만들 수 있다.
var car = {
fuel: 10,
power: 2,
total: 0,
run: function(a){
this.fuel -= 1;
}
};
car.fuel = 10000; //이러한 방법으로 연료를 마음대로 늘릴수 있음
이러한 상황을 막기위해
var createCar = function(f, p){
var fuel = f;
var power = p;
var total = 0;
return {
run: function(a){
this.fuel -= 1;
}
}
}
var car = createCar(10,2); //이렇게 되면 처음에 선언한 연료를 마음대로 늘릴수 있는 방법이 사라짐
이와 같은 방법으로 함수내부에 있는 변수들은 private한 변수로 return된 변수는 public한 변수로 사용할 수 있다.