JavaScript · Senior · Запитання 25 з 75

Чому в реалізації debounce важливо зберігати this і аргументи?

function debounce(fn, ms) {
  let t;
  return function (...args) {
    clearTimeout(t);
    t = setTimeout(() => fn.apply(this, args), ms);
  };
}

Пояснення

Обгортка має бути прозорою: виклик obj.save(data) через debounce мусить дійти до fn із тим самим this і аргументами. Тому повертають звичайну функцію (у неї власний this), а всередині таймера - стрілку, яка його зберігає.

Де почитати

Помилка в запитанні

JavaScript · Senior · запитання 25

Перевірте себе

Пройдіть тест JavaScript · Senior: запитання й варіанти перемішуються, а наприкінці - розбір помилок.

Пройти цей тест