JavaScript · Senior · Запитання 25 з 75
Чому в реалізації debounce важливо зберігати this і аргументи?
function debounce(fn, ms) {
let t;
return function (...args) {
clearTimeout(t);
t = setTimeout(() => fn.apply(this, args), ms);
};
}- ✓Правильна відповідь: Інакше обгорнутий метод втратить контекст об'єкта й параметри виклику
- 2Інакше попередній таймер не зможе очиститися через
clearTimeout - 3Інакше функція виконається синхронно, без затримки в
ms
Пояснення
Обгортка має бути прозорою: виклик obj.save(data) через debounce мусить дійти до fn із тим самим this і аргументами. Тому повертають звичайну функцію (у неї власний this), а всередині таймера - стрілку, яка його зберігає.