问一个关于闭包中的setTimeout的问题
function debounce(fn, delta, context) {
var timeoutID = null;
return function() {
if(timeoutID) {
clearTimeout(timeoutID);
console.log(timeoutID);
}
var args = arguments;
timeoutID = setTimeout(function() {
fn.apply(context, args);
}, delta);
}
}
function D() {
document.body.innerHTML += 'D<br>'
}
window.addEventListener('click', debounce(D, 1000));
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
你看到的那个数字是变量
timeoutID
的值,它是由setTimeout
函数返回的,它的值是一个数字。它代表一个定时器的 id ,每次点击后这个值会变化。例如在 Chrome 浏览器中,第一次点击后它的值是 1, 第二次点击后是 2,以此类推。它只代表定时器的 id,不代表定时器是否已经已经完成或者被取消。
你又没清空timeoutID这个变量 当然能看到了
这样子试一下,