// 防抖
function debounce(fn, time) {
let delay = time || 200;
let timer;
return function() {
let th = this;
let args = arguments;
if (timer) {
clearTimeout(timer);
}
timer = setTimeout(function() {
timer = null;
fn.apply(th, args);
}, time);
};
}
// 节流
function throttle(fn, delay) {
let valid = true
return function() {
if (!valid) {
//休息时间 暂不接客
return false
}
// 工作时间,执行函数并且在间隔期内把状态位设为无效
valid = false
setTimeout(() => {
fn()
valid = true;
}, delay)
}
}
js防抖节流
本文深入探讨了JavaScript中两种重要的函数优化技术——防抖(debounce)和节流(throttle)。通过示例代码详细解释了它们的工作原理及应用场景,帮助开发者提高代码性能,尤其在处理高频触发的事件如窗口滚动、输入事件时更为有效。
摘要由CSDN通过智能技术生成