去抖函数 节流函数

去抖函数:

     function qudou(cb){
		console.log('uuuuuuuuu')
		var timer=null;
		return function(){
			console.log(timer)
			clearTimeout(timer)
			timer = setTimeout(function(){
				cb()
			},1000);
		}
	}
	function test(){
		console.log(8888)
	}
	document.getElementById('btn').addEventListener('click',qudou(test))

为什么这么写,而不是
	document.getElementById('btn').addEventListener('click',function(){
		qudou(test)()
	})

  把代码复制过去,跑一下就知道了。这里的知识点:闭包。必须把timer设置为全局变量,否则clearTimeout每次清除的都将是函数内部本次的settimeout,而不是上一次的。(上面代码不是用的全局变量,用的闭包代替)

  

节流函数

function jieliu(cb){
	console.log('uuuuuuuuu')
	var bTime = new Date();
	return function(){
		current = new Date()
		if(current-bTime>=1000){
			bTime = current;
			cb()
		}
	}
}
function test(){
	console.log('kkkk')
}
document.getElementById('btn').onclick = jieliu(test);

  

原文地址:https://www.cnblogs.com/aiyr/p/10185762.html