zoukankan      html  css  js  c++  java
  • 函数节流和函数防抖

    前端经典面试题目:什么是函数节流,什么是函数防抖?

      函数节流:一个函数执行一次后,只有大于设定的执行周期后才会执行第二次

        栗子:有个需要频繁出发函数,处于优化性能角度,在规定时间内,只让函数触发的第一次生效,后面不生效。

      案例:页面中有个滚动条,当我滑动滚动条时,会出发函数打印一句话,控制在0.2s以内只打印一次。

        html,body{
          height: 400%;
        }
     //  fn:要被节流的函数,delay:规定的时间
       function throttle(fn,delay){
        //  记录上一次函数触发的时间
         var lasttime = 0
         return function(){
          //  记录当前函数触发的时间
           var nowTime = Date.now()
           if(nowTime - lasttime > delay){
            //  修正this指向问题
             fn.call(this);
            //  同步时间
             lasttime = nowTime
           }
         }
       }
       document.onscroll = throttle(function(){
         console.log('滚动条被触发了' + Date.now())
        },200)

      函数防抖:一个需要频繁触发的函数,在规定时间内,只让最后一次生效,前面的不生效

      案例:页面中有个按钮,点击按钮打印:按钮被点击了,如果在0.2s内点击了多次,也只打印一次(最后一次点击的生效)

      <button id="btn">按钮</button>
       function debounce(fn,delay){
        //  记录上一次的延时器
         var timer = null
         return function(){
          //  清除上一次延时器
           clearTimeout(timer)
          //  重新设置新的延时器
          timer = setTimeout(function(){
            fn.apply(this)
          },delay)
         }
       }
       document.getElementById('btn').onclick = debounce(function(){
        console.log('按钮被点击了')
       },200)
  • 相关阅读:
    KMP总结
    条件概率的计算
    EL和JSTL
    tomcat部署web项目
    web
    面试1
    面试可能会问的题
    简介
    建一个springboot项目
    刷题之牛客网
  • 原文地址:https://www.cnblogs.com/yaya-003/p/12800570.html
Copyright © 2011-2022 走看看