javascript - 问一个关于闭包中的setTimeout的问题
本文介绍了javascript - 问一个关于闭包中的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));
解决方案
你看到的那个数字是变量 timeoutID
的值,它是由 setTimeout
函数返回的,它的值是一个数字。它代表一个定时器的 id ,每次点击后这个值会变化。例如在 Chrome 浏览器中,第一次点击后它的值是 1, 第二次点击后是 2,以此类推。
它只代表定时器的 id,不代表定时器是否已经已经完成或者被取消。
这篇关于javascript - 问一个关于闭包中的setTimeout的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文