let timer; function oninput() { timer && clearTimeout(timer); timer = setTimeout(function () { console.log("第二个"); }, 2000); } document.getElementById("input2").oninput = oninput;和 function debounce(fn, delay) { let timer; return function () { const context = this; const args = arguments; timer && clearTimeout(timer); timer = setTimeout(function () { fn.apply(context, args); timer = null; }, delay); }; } function handleInput() { console.log("第一个"); } const event = debounce(handleInput, 2000); document.getElementById("input").oninput = event;详细说说这两段代码的区别
时间: 2024-02-14 09:33:08 浏览: 146
C#中Forms.Timer、Timers.Timer、Threading.Timer的用法分析
这两段代码都使用了防抖技术来延迟函数的执行。当事件被触发时,防抖函数会在一定的时间内等待,如果在等待时间内没有再次触发事件,则执行函数,否则重新开始计时。
第一段代码是直接在事件处理函数中添加了延迟执行的代码,而第二段代码是将防抖函数封装成了一个函数,可以在多个事件处理函数中使用。
具体区别如下:
1. 可复用性:第二段代码把防抖函数封装成了一个可复用的函数,可以在多个事件处理函数中使用,而第一段代码只能在该事件处理函数中使用。
2. 可扩展性:第二段代码可以在不修改原有代码的情况下,通过传入不同的函数和时间参数来扩展防抖功能,而第一段代码需要修改原有代码来实现扩展。
3. 可读性:第二段代码通过将防抖函数封装成一个独立的函数,使代码更加简洁易懂,而第一段代码可能会使代码变得臃肿难懂。
总之,第二段代码更加灵活、可复用和可扩展,而且代码更加简洁易懂。
阅读全文