프론트엔드 개발 · 중급
JavaScript의 debounce와 throttle의 차이점과 사용 사례를 설명해주세요.
힌트 · 이벤트 처리 최적화와 각각의 동작 타이밍을 비교해보세요.
debouncethrottle호출 빈도 제한setTimeout성능 최적화
모범답안
면접관님, debounce와 throttle은 JavaScript에서 이벤트 핸들러의 호출 빈도를 제어하여 성능을 최적화하는 데 사용되는 기술입니다.
debounce는 특정 시간 동안 이벤트가 발생하지 않을 때, 마지막 이벤트 발생 시점의 함수를 딱 한 번만 호출합니다. 예를 들어, 검색어 자동 완성 기능에서 사용자가 입력을 멈춘 후에 검색 결과를 보여주는 데 유용합니다.
반면, throttle은 설정된 시간 간격 동안 함수가 최대 한 번만 호출되도록 합니다. 스크롤 이벤트 처리처럼 짧은 시간 간격으로 이벤트가 계속 발생하는 경우, throttle을 사용하면 함수 호출 빈도를 줄여 성능 저하를 방지할 수 있습니다.
핵심적인 차이는 debounce는 "마지막" 이벤트에 반응하고, throttle은 "일정 간격"으로 반응한다는 점입니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 JavaScript 면접 질문
- JavaScript의 this 바인딩 규칙에 대해 설명해주세요.
- JavaScript의 프로토타입(Prototype)과 프로토타입 체인에 대해 설명해주세요.
- JavaScript의 가비지 컬렉션(Garbage Collection) 동작 방식에 대해 설명해주세요.
- JavaScript의 실행 컨텍스트(Execution Context)와 스코프 체인에 대해 설명해주세요.
- JavaScript의 WeakMap과 WeakSet의 특징과 사용 사례를 설명해주세요.
- JavaScript의 이터레이터(Iterator)와 제너레이터(Generator)에 대해 설명해주세요.