js 手写防抖


  1. 如果存在之前的计时器,取消重新计时。 即多次点击只执行最后一次
  2. 注意this指向和回调形参列表
    <button onclick="clickMe(1)">点我</button>
    <script>
        const clickMe = debounce((a) => {
            console.log(a);
        }, 500)
        function debounce(fn, timeout) {
            let timer = null
            return function () {
                let context = this
                let args = Array.prototype.slice.call(arguments)
                if (timer) {
                    clearTimeout(timer)
                    timer = null
                }
                timer = setTimeout(() => {
                    fn.apply(context,args)
                }, timeout);
            }
        }
    </script>

原创文章,作者:端木书台,如若转载,请注明出处:https://blog.ytso.com/267738.html

(0)
上一篇 2022年6月18日
下一篇 2022年6月18日

相关推荐

发表回复

登录后才能评论