函数防抖的理解--- 函数防抖,是指仅仅在设定的时间内只执行你的最后一下操作,之前的都会被清空。 比如在输入框连续输入100个字符,那么就会利用变量是否为null进行100次的判断, 如果变量不是null 就证明已经执行过一次并且将setTimeout赋值给了timeoute(此时非null), 所以就会清空上一次的timeout,而本次点击的不会被清空,会在设定的时间后执行, 如果在设定的时间内又再次触发了,那么就会继续清空上次的timeout,再等待本次的多少秒后执行, 这就是函数防抖的定义
手写案例: function debounce(func,time){ let timeout = null return function(){ if(timeout) clearTimeout(timeout) // 判断是否为null 如果不为null 就证明 已经执行过setTimeout 并进行了赋值,但是由于setTimeout 是延迟 执行所以还 没真正执行里面的函数,而此时你又触发了并且判断timeout 已经不再是null,所 以就会清空timeout timeout =setTimeout(()=>{ func.call(this,arguments) },time) } }