js函数防抖和函数节流及其他使用场景

一、onscroll(滚动条事件)

首先我们要知道什么是onscroll滚动事件。

onscroll是在元素轴滚动时触发的。

//onscroll 滚动条事件
    window.onscroll = function(){
        // console.log(document.body.scrollTop);  观察滑轮距浏览器顶部的高度
        // console.log(document.documentElement.scrollTop);
        console.log("调用一次");
        let num = document.body.scrollTop ||document.documentElement.scrollTop;
        if(parseInt(num) >= 400){
            document.getElementById("returntop").style = "display:block";
        }else{
            document.getElementById("returntop").style = "display:none";
        }
    } 

运行结果:

js函数防抖和函数节流及其他使用场景_第1张图片

 二、什么是函数防抖和函数节流

防抖(debounce)和节流(throttle)都是用来控制某个函数在一定时间内执行多少次的技巧,两者相似不相同,基本思想都是某些代码不可以在没有间断的情况下连续重复执行。

2.1函数防抖

如果一个事件被频繁执行多次,并且触发的时间间隔过短,则防抖函数可以使得对应的事件处理函数,只执行最后触发的一次。函数防抖可以把多个顺序的调用合并成一次。

2.2函数节流 

如果一个事件被频繁触发多次,节流函数可以按照固定的频率去执行相应的事件处理方法。函数节流保证一个事件一定事件内只能执行一次。




    
    
    
    Document



    
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖
函数防抖

运行结果:

 




    
    
    
    Document



    
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流
函数节流

运行结果:

 

 三、应用场景

函数防抖:应用于回到顶部此项功能。

//函数防抖
    function debounce(callback,time = 300){
        let t;
        return function(){
            clearTimeout(t);
            t = setTimeout(callback,time)
        }
    }
    
//绑定滚动条事件
    window.onscroll = debounce(returntop,500)
//回到顶部
    function returntop(){
        console.log("调用一次");
        let num = document.body.scrollTop ||document.documentElement.scrollTop;
        if(parseInt(num) >= 400){
            document.getElementById("returntop").style = "display:block";
        }else{
            document.getElementById("returntop").style = "display:none";
        }
    }

运行结果:

函数节流:应用于按钮,例如登录按钮。用户连续点击多次进行访问,后台在点击一次后间隔一段时间再接收。 




    
    
    
    Document



    


 

运行结果:

你可能感兴趣的:(javascript,开发语言,ecmascript)