防抖
function debounce(fn,delay){ let t = null return function(){ if(t!==null){ clearTimeout(t) } t= setTimeout(() =>{ fn.call(this) },delay) } }
频繁触发事件,只执行事件的最后一次
其中变量t的使用实际是闭包的实际使用
节流
function throttle(fn,delay){ let flag = true return function(){ if(flag){ setTimeout(()=>{ fn.call(this) flag = true },delay) } flag = false } }
频繁触发事件,在规定时间内,只执行一次