Sobes.tech
Middle

Ką pasikeistų, jei apibrėžtume debounce kaip rodyklės funkciją? Kaip perduoti argumentus naudojant rest operatorių (tris taškus)?

sobes.tech AI

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