javaScript中的函数大多数情况下都是由用户主动调用触发的,除非是函数本身的实现不合理,否则我们一般不会遇到跟性能有关的问题。但是在一些少数的情况下,函数的触发不是由用户直接控制的。在这些场景下,函数由可能被频繁调用,造成大的性能问题。
1、函数被频繁调用的场景
(1)window.onresize事件。我们给window对象绑定了resize事件,当浏览器窗口大小改变的时候,事件调用频率非常高,并且在window.onresize事件有和DOM相关的操作,会造成页面卡顿。 (2)mousemove事件。如果我们给一个div节点绑定了拖拽事件,也会频繁的触发拖拽事件。
2、函数节流的原理
上面提到的两种场景都是函数被频繁的调用。 函数节流的实现原理就是在一定的时间段内忽略一些事件的请求,比如设置在500ms内只调用一次。很显然,setTimeout可以很完美的协助我们完善这个事情。
3、函数节流代码实现
函数节流 复制代码