关于前端如何编写防手抖功能

防“手抖”

今天去 鱼皮大佬的网站 [面试鸭] , 看到一个有意思的面试题 (手动实现’防抖’和’节流’)

接着自己去学习了一下,感觉还是挺有意思的


实现

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>防抖</title>
</head>
<body>
    <button class = "son">点击</button>
    <script>
        // 获取一下button标签
        const but = document.querySelector(".son")

        //定义一个功能函数
        function go(){
            console.log("下单啦")
        }

        //设置点击频率
        function db(fun,time){
            let timer;
            return function(){
                //把this 重新定义
                let context = this;
                let args = arguments;
                clearTimeout(timer);
                timer = setTimeout(function(){
                    fun.apply(context,args)
                },time)
                if(timer > 1){
                    console.log("请勿重复下单")
                }
            }
        }
    
        //使用高阶函数 侦测 db
        but.addEventListener('click',db(go,1000))
    </script>
</body>
</html>

最后

面试鸭里面还是有很多不错的面试题的,推荐一手

官网 :[面试鸭]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值