防抖的概念是在一定时间内只执行一次函数,如果在这段时间内再次触发,则重新计时。这样可以在频繁触发事件时,减少多余的执行,提升性能。
实现防抖的步骤:
- 设置一个定时器变量
- 每次触发事件时,清除旧的定时器
- 设置新的定时器,在一定延迟后执行函数
<button onclick="btn()">
点击
</button>
<script>
//防抖函数
function debounce (func,wait) {
let timeout;
return function() {
const context = this;
const args = arguments;
clearTimeout(timeout);
timeout = setTimeout(() =>{
func.apply(context,args);
},wait)
}
}
function handleBtn() {
console.log(123456);
}
const btn = debounce(handleBtn, 300);
</script>