function debounce(fn, delay) {
var timer
return function () {
var context = this
var args = arguments
clearTimeout(timer)
timer = setTimeout(function () {
fn.apply(context, args)
}, delay)
}
}
代码如上 不明白这里为什么一定要 return function 加一层是干什么用的
求解
1.
debounce
是一个高阶函数,接受一个函数作为参数,返回一个经过防抖包装的函数。所以返回的一定是一个函数。2.至于为什么不直接返回原函数,是因为这个防抖处理需要在原函数执行前进行抖动判断,而原函数的内容时无法修改的,因此需要返回一个自己定义的函数以执行判断逻辑