Функция дебаунса на JavaScript

Функция дебаунса для уменьшения количества вызовов функции.
/**
 * Функция дебаунса для уменьшения количества вызовов функции.
 * @param {Function} func - Функция, которую нужно задебаунсить.
 * @param {number} delay - Задержка в миллисекундах.
 * @return {Function} - Задебаунсенная функция.
 */
function debounce(func, delay) {
  let timeoutId;
  return function(...args) {
    clearTimeout(timeoutId);
    timeoutId = setTimeout(() => {
      func.apply(this, args);
    }, delay);
  };
}

// Пример использования:
window.addEventListener('resize', debounce(() => {
  console.log('Изменение размера окна');
}, 300));