Sobes.tech
Middle

Co se změní, pokud definujeme debounce jako šipkovou funkci? Jak předávat argumenty pomocí operátoru rest (tři tečky)?

sobes.tech AI

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