var createCounter = function(init) {
let ori = init
return {
increment: () => {
ori += 1
return ori
},
decrement: () => {
ori -= 1
return ori
},
reset: () => {
ori = init
return ori
}
}
};
JS의 클로저에 관한 문제인 것 같다.
여기서init
의 값을 다른 변수에 담아두는 이유는 초기init
의 값을 보존하기위해서다. 담아두지 않게되면increment
,decrement
실행시init
이 계속 변하게된다. 그러면reset
실행시 초기init
을 리턴하지 못하게 된다.
초기init
값을 보존하고 다른 변수를 통해 계산을 실행시키면된다.