zoukankan      html  css  js  c++  java
  • js面试题之手写节流函数和防抖函数

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

     1 /* 
     2             节流函数:fn:要被节流的函数,delay:规定的时间
     3         */
     4        function throttle(fn,delay){
     5             // 记录上一次函数出发的时间
     6             var lastTime = 0
     7             return function(){
     8             // 记录当前函数触发的时间
     9             var nowTime = new Date().getTime()
    10             // 当当前时间减去上一次执行时间大于这个指定间隔时间才让他触发这个函数
    11             if(nowTime - lastTime > delay){
    12                 // 绑定this指向
    13                 fn.call(this)
    14                 //同步时间
    15                 lastTime = nowTime
    16             }
    17             }
    18        }   

    函数防抖:不断触发一个函数,在规定时间内只让最后一次生效,前面都不生效

     1 function debounce(fn,delay){
     2            var timer = null
     3         //  清除上一次延时器
     4           return function(){
     5                clearTimeout(timer)
     6               //  重新设置一个新的延时器
     7               timer = setTimeout(() => {
     8                   fn.call(this)
     9               }, delay);
    10           }
    11        }

    更多面试题请前往githubhttps://github.com/bettersong/interview

  • 相关阅读:
    Seven Puzzle Aizu
    Cheese
    Curling 2.0
    Ball
    Property Distribution
    Red and Black
    Lake Counting
    Ants
    剑桥雅思写作高分范文ESSAY20
    剑桥雅思写作高分范文ESSAY19
  • 原文地址:https://www.cnblogs.com/songyao666/p/11415787.html
Copyright © 2011-2022 走看看