Я пытаюсь научиться реализовывать debouncing в javascript, однако я получил ошибку "Uncaught TypeError: Невозможно прочитать свойство 'clientX' из неопределенного".Могу ли я узнать, как это исправить?
Кроме того, я все еще очень озадачен:
function debounce (func, wait) {
var timeoutID;
return function () {
clearTimeout(timeoutID);
timeoutID = setTimeout(func, wait);
}
}
Я знаю, что основная идея debounce - запускать функцию, когда мы не перемещаем мышь в течение 2 секунд, еслимы переместились в течение 2 секунд, счетчик будет очищен и снова пересчитан с самого начала, но я все еще не понимаю код.Почему мы устанавливаем переменную timeoutID в начале функции?Как это определить как timeoutID, который мы установили внутри возвращаемой функции?почему мы тогда «возвращаем» функцию таймера?Когда он вызывается впервые, var timeoutID просто инициирует эту переменную без значения, тогда как clearTimeout (timeoutID) может использовать эту переменную без значения?Большое вам спасибо!
function debounce (func, wait) {
var timeoutID;
return function () {
clearTimeout(timeoutID);
timeoutID = setTimeout(func, wait);
}
}
function test(e) {
console.log(e.clientX);
}
document.addEventListener('mousemove', debounce(test,2000));