前端开发中,“函数节流(throttle)” 和 “函数防抖(debounce)” 做为经常使用的性能优化方法,二者都是用于优化高频率执行 js 代码的手段,那具体它们有什么异同点呢?有对这两个概念不太了解的小伙伴,能够移步本人以前所写的 JS进阶篇1---函数节流(throttle) 和 JS进阶篇2---函数防抖(debounce)。前端
你们都知道,液晶显示器的屏幕刷新率一般为 60Hz ,即每秒屏幕内容刷新 60 次,那为何是 60 次,而不是 30 次,或者 90 次呢?这是由于,当液晶显示器的屏幕刷新率为 60Hz 的时候(这里只讨论液晶显示器),人肉眼不再能察觉出屏幕的闪烁现象,低于这个刷新频率画面会有卡顿现象,而高于这个频率的话,又会形成额外的资源和能源浪费,所以,液晶显示器的默认屏幕刷新率为 60Hz。segmentfault
同理,在前端开发过程当中,有一些会被高频触发的事件,例如 resize、scroll、mousemove 等,但有些时候咱们并不但愿在事件持续触发的过程当中那么频繁地去执行函数,达到必定频率就足够了,由于超过这个频率以后,不管代码执行多少次,带来的效果也是同样,因此倒不如把 js 代码的执行次数控制在合理的范围。这样既能够节省计算机资源,又能够保证浏览的流畅性,这就是 “函数节流” 和 “函数防抖” 要解决的问题。浏览器
“函数节流” 使用场景缓存
“函数防抖” 使用场景性能优化
不论是 “函数节流” 仍是 “函数防抖”,都是用来进行性能优化的方式,也都是在项目开发过程当中,为了解决开发中的实际问题而慢慢发展而来的,必定要在合适的场合才用正确的方法使用它们,切忌滥用,否则不只不会发挥它们该有的做用,还会影响代码执行的正确性。有疑问或者建议,记得在评论区提出哦,欢迎留言!函数