防抖就是说在一个规定的时间内,只有最后一次操作,这个事件才会成功。
节流是说在一个规定的时间内,不管你操作了多少次,都会当做一次事件。
防抖通常用于实时搜索
每次防抖函数出发的时候都会根据根据变量timeout删除上一个定时器然后触发新的定时器,所以这个不能是内存溢出
防抖函数第一次不会触发,需要设置isInvoke
闭包的参数和变量不会被回收
function debounce(func, wait) {
/*
@ func 延迟执行的函数
@ wait 延迟时间
*/
let timeout;
return function () {
let context = this;
let args = arguments;
if (timeout) clearTimeout(timeout);
timeout = setTimeout(() => {
func.apply(context, args)
}, wait);
}
}