可以看出debounce函数的实现原理就是通过计时器延迟函数执行,短时间内再次触发时重置并添加新计时器。此时的输出函数还有个缺陷,就是this指向global,我们需要让它指向原本指向的变量。
function debounce(fn, wait = 1000) { let timer = null; return function debounced(...args) { // 重置计时器 if (timer) clearTimeout(timer); // 新计时器 timer = setTimeout(() => { fn.apply(this, ...args); timer = null; }, wait); }; }面试之手写防抖节流 (4)
内容版权声明:除非注明,否则皆为本站原创文章。