防抖函数
function debounce(func, time) { let timer = null; return function () { let context = this // console.log('context :', this); clearTimeout(timer) timer = setTimeout(function () { console.log('this :', this); func.call(this) }, time) } }复制代码
节流函数
function throttle(method, time) { var timer = null; var startTime = 0; return function () { var endTime = new Date(); var resTime = endTime - startTime; //判断大于等于我们给的时间采取执行函数; if (resTime >= time) { method.call(this); //执行完函数之后重置初始时间,等于最后一次触发的时间 startTime = endTime; } } }复制代码
测试:
window.onscroll = debounce(() => { console.log(1); }, 500) function fn() { _throttle() } let _throttle = throttle(function () { console.log(2); }, 1000) window.onmousemove = fn复制代码