function debounce(fn,delay = 300){
let timer;
return function(){
const args = arguments;
if(timer){
clearTimeout(timer);
}
setTimeout(()=>{
fn.apply(this,args);
},delay)
}
}