Sobes.tech
Middle

Ce se întâmplă dacă definim debounce ca o funcție arrow? Cum se transmit argumente folosind operatorul rest (trei puncte)?

sobes.tech AI

Răspuns de la AI

Если определить 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) разворачивает этот массив обратно в список аргументов при вызове исходной функции.