Once Function
Once Function - Explanation
Problem Summary
Write a function that ensures another function is only called once.
Go to Problem →Detailed Explanation
이 문제는 **클로저(closure)**를 사용하여 함수가 한 번만 실행되도록 래핑하는 방법을 학습합니다. ## 핵심 개념: 실행 횟수 제한 클로저를 사용하여 함수 호출 상태를 추적하고 제어합니다. ### 접근 방법 ```javascript function once(fn) { let called = false; let result; return function(...args) { if (!called) { called = true; result = fn.apply(this, args); } return result; }; } ``` ### 동작 분석 1. 외부 변수 called로 호출 여부 추적 2. 첫 호출 시 함수 실행하고 결과 저장 3. 이후 호출은 저장된 결과만 반환 ### 실행 예시 ```javascript const init = once(() => console.log('초기화')); init(); // "초기화" 출력 init(); // 아무것도 안 함 init(); // 아무것도 안 함 ``` ### 실무 활용 - 초기화 함수 (한 번만 실행) - API 호출 제한 - 이벤트 핸들러 중복 방지 - 싱글톤 패턴 구현
Solution Code
function once(fn) {
let called = false;
let result;
return function(...args) {
if (!called) {
called = true;
result = fn.apply(this, args);
}
return result;
};
}Key Concepts from This Problem
Common Mistakes
Hints
Complexity Analysis
Time Complexity
O(1)
Constant time regardless of input size
Space Complexity
O(1)
Uses almost no additional memory