Sobes.tech
Middle

Debounce'u ok işlevi olarak tanımlarsak ne değişir? Argümanları rest operatörü (üç nokta) ile nasıl iletebiliriz?

sobes.tech yapay zeka

AI'dan gelen yanıt

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