防抖
function debounce(fn: Function, delay: number) {
let timer: number; //借助闭包
return function () {
if (timer) {
clearTimeout(timer);
}
timer = setTimeout(fn, delay);
};
}
function showTop() {
var scrollTop =
document.body.scrollTop || document.documentElement.scrollTop;
console.log("滚动条位置:" + scrollTop);
}
window.onscroll = debounce(showTop, 1000);
总结:window.onscroll对应debounce函数的返回值,即
function () {
if (timer) {
clearTimeout(timer);
}
timer = setTimeout(fn, delay);
};
而其中的timer则对应debounce函数中的timer且timer不会被销毁。
例二:
function click() {
let num:number = 1
return function () {
console.log(num++);
}
}
window.onclick = click();
点击页面时浏览器中的执行结果: