js面试题之手写节流函数和防抖函数

Posted songyao666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于js面试题之手写节流函数和防抖函数的主要内容,如果未能解决你的问题,请参考以下文章

JS中节流和防抖函数的实现和区别

前端开发面试题-问答

前端开发面试题-问答

闭包与防抖节流

JS的防抖和节流

22 道高频 JavaScript 手写面试题及答案