防抖函数
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>防抖函数</title>
</head>
<body>
<input type="text" id="input">
<script>
var input = document.getElementById('input') // document 对象属性和方法 ; 返回对拥有指定 id 的第一个对象的引用
//防抖函数
function debounce(delay,callback) { // 去掉callback 输出在里面 翻译 -- delay -- 延迟
let timer
return function (value) {
clearTimeout(timer) // 阻止 setTimeout() 方法执行函数
//我们想清除的是setTimeout 我们应该存储这个timer的变量
//timer变量需要一直保存在内存中
timer = setTimeout(function () { // setTimeout 该方法用于在指定的毫秒数后调用函数或计算表达式
// console.log(value) 让输出结果在外面
callback(value)
},delay)
}
}
//外部輸出結果,例如在這裡輸出
function fn (value) {
console.log(value)
}
//我需要的是输入框的结果只出现一次 且是在键盘停止输入后的一秒后打印
var debounceFunc = debounce(1000,fn)
input.addEventListener('keyup',function (e) { // 输入框监听事件
debounceFunc(e.target.value)
})
// 闭包: 函数里面return函数
</script>
</body>
</html>

浙公网安备 33010602011771号