闭包 1.返回值是一个函数 2.返回函数使用函数外面定义的局部变量
闭包的好处:不会造成全局污染
<body>
<input type="text" name="" id="input">
<script>
var input=document.querySelector('#input')
input.addEventListener("keyup",debounce(()=>{
console.log(input.value);
}))
function debounce(fn,delay=500){
let timer=null;
return function(){
if(timer){
clearTimeout(timer)
}
timer =setTimeout(fn,delay)
}
}
</script>
</body>
<body>
<button id="btn">btn</button>
<script>
var btn=document.querySelector('#btn')
btn.addEventListener('click',debounce(function(){
console.log(this.id);
}))
function debounce(fn,delay=500){
let timer=null;
return function(){
if(timer){
clearTimeout(timer)
}
timer= setTimeout(()=>{
fn.call(this);
},delay)
}
}
</script>
</body>