概念
防抖:连续调用后等待一段时间执行一次,如果等待时间内又重新触发,将重新等待一段时间执行
节流:连续调用,在指定时间段内内只执行一次
两者的目的都是减少触发的次数,保证性能和效率,区别在于业务场景和需求的不同。可以触发防抖和节流的事件有:onscroll、onmouseMove、onChange、onResize等。
具体怎么实现的还是看代码比较容易理解
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>防抖:多次调用后只执行一次</title>
</head>
<body style="height:1400px;">
<script>
'use strict'
function debounce(fn,delay){
var timer; //闭包保存局部变量
return function(...args) {
if(timer){
clearTimeout(timer)
}
timer = setTimeout(() => {
fn(...args);
timer = null;