疑问求解:防抖函数的这个写法,重复触发后,timer 作为一个计时器被不停重置。但是我的理解是,在多次触发的时候 这个timer 与上一个 timer 是存在于同一个作用域内的吗?也就是此时的timer 与上一个timer 为什么会是同一个这个问题。可能是我钻牛角尖了,我错误的认为这个方法被触发的时候,是两个独立的作用域,但是我不理解为什么。
```javascript
var btn = document.getElementById('btn');
function debounce (fn, delay) {
let timer = null
return function () {
// 在规定时间内再次触发会先清除定时器后再重设定时器
console.log(timer)
clearTimeout(timer);
timer = setTimeout(function () {
console.log(this)
fn.apply(this, arguments);
}, delay);
}
}
function fn () {
console.log('防抖')
}
btn.onclick = function () {
debounce(fn, 3000)()
}
```