var createCounter = function(init) {
var value = init;
var counter = {
increment: function() {
value++;
return value;
},
decrement: function() {
value--;
return value;
},
reset: function() {
value = init;
return value;
}
};
return counter;
};
코드 한줄씩 설명
var createCounter = function(init) {
var value = init;
주의사항: 클로저 함수 정의해주기!
여기서는 init이라는 초기값 하나로 함수를 세개나 정의해주어야 하기 때문에
초기 매개변수를 설정을 잘 받는 것이 중요하다.
클로저를 사용하여 각 increment, decrement, reset 각 함수들의 생성될 때의 환경을 기억하고, 이후에도 해당 환경에 접근하여 해당 변수의 값을 유지해야한다(---여기서 처음 입력받은 매개변수를 입력받는게 중요하다!--)
// counter 함수 정의해주기
var counter = {
increment: function() {
value++;
return value;
},
2. counter 함수 정의해주기
이때 한 함수를 입력했을 때 세개의 함수를 출력받아야 하기 때문에 counter 함수 안에 세 함수를 넣어주는 것이다.
// decrement 함수 정의해주기
decrement: function() {
value--;
return value;
},
// reset 함수 정의해주기
reset: function() {
value = init;
return value;
}
};
3. decrement와 reset 함수 각각 정의
// counter 함수 반환
return counter;
};
'Algorithm > LeetCode' 카테고리의 다른 글
[JS] 메모이제이션(Memoization)과 캐시 (Cache) / 리트코드 2623 풀이 (0) | 2024.03.27 |
---|