Sobes.tech
Middle

¿Qué cambiaría si definimos debounce como una función flecha? ¿Cómo pasar argumentos usando el operador rest (tres puntos)?

sobes.tech AI

Respuesta de la IA

Если определить debounce как стрелочную функцию, то контекст this внутри неё будет лексически связан с контекстом, в котором она объявлена. Это удобно, чтобы не терять контекст при передаче функции.

Пример debounce как стрелочной функции с rest-оператором для аргументов:

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

// Использование:
const log = (...args) => console.log(...args);
const debouncedLog = debounce(log, 300);
debouncedLog('Привет', 'мир');

Здесь (...args) — это rest-оператор, который собирает все переданные аргументы в массив args. Затем func(...args) разворачивает этот массив обратно в список аргументов при вызове исходной функции.