第一种
function throttle(fn, delay) {
let timer = 0
return function (fn, delay) {
if (timer) {
return false
}
timer = setTimeout(() => {
fn.apply(this, arguments)
timer = 0
}, delay)
}
}
第二种
function throttle(fn, delay) {
let flag = true
return function (fn, delay) {
if (!flag) {
return false
}
flag = false
setTimeout(() => {
fn.apply(this, arguments)
flag = true
}, delay)
}
}
总结: 两种写法,实际上效果是一种的,第一种写法代码上更简洁一些。只是 if 里面的判断变了而已