一、防抖(debounce)
1. 定义
当连续触发一个事件时,将多次执行变成最后一次执行
2. 场景
有些事件会被频繁触发,但我们不需要他如此频繁,只在最后一次触发做操作即可。例如🌰搜索框的联想建议
3. 手写防抖
原理:在事件发生前,取消上一次的定时器,开启新的计时器
function debounce(func,wait){
let timeout;
return function(){
let context=this;
let args=arguments;
clearTimeout(timeout); //使用到闭包
//if(timeout) clearTimeout(timeout); //我看到标准的这样写,更严谨
//设置定时器,使事件间隔指定事件后执行
timeout=setTimeout(function(){
func.apply(context,args); //改变执行函数内部this的指向和event指向
},wait);
}
}
//升级版-加入立即执行
function debounce(func,wait,immediate){
let timeout;
return function(){
let context=this;
let args=