示例的源码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript"></script>
</head>
<body style="height: 300px;background: green;">
<script>
var f = '';
var num = 0;
$('body').click(function(argument) {
if(f){
clearTimeout(f);
}
f = setTimeout(function(argument) {
num++;
console.log(num);
},800)
})
</script>
</body>
</html>
在浏览器中打断点后的分析总结:
首次点击 if 为false 会在下面的函数执行中生成一个 setTimeout 事件 , 在 800ms 内再次点击 if 为 true 会清除掉上次生成的 setTimeout 事件 , 往下面执行时又重新生成一个新的 setTimeout 事件, 所以在 800ms 内连续点击只会执行最后一次点击的事件,所以便完成了稀释的效果。