Писал ли Debounce

«Писал ли Debounce» — вопрос из категории Алгоритмы, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, писал. Debounce — это функция, которая откладывает вызов другой функции до тех пор, пока не пройдет определенное время без новых вызовов. Полезно, например, для обработки событий scroll или input.

Пример реализации:

function debounce(func, delay) {
  let timeoutId;
  return function(...args) {
    clearTimeout(timeoutId);
    timeoutId = setTimeout(() => {
      func.apply(this, args);
    }, delay);
  };
}

// Использование
const handleInput = debounce((value) => {
  console.log('Input value:', value);
}, 300);

inputElement.addEventListener('input', (e) => handleInput(e.target.value));

Ключевые моменты:

  1. Использует setTimeout и clearTimeout
  2. Возвращает функцию-обертку
  3. Сохраняет контекст вызова через apply
  4. Подходит для оптимизации частых событий