写给新手,JS关于函数防抖的理解

·  阅读 47

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

分类:
前端
标签:
分类:
前端
标签: