节流阀throttle触发的事件以周期的形式去执行,而非实时。如滴水的水龙头。function throttle (fn, delay) { // 利用闭包变量时效性 let timeout return function () { const arg = arguments if (timeout) { timeout = setTimeout(() => { fn.apply(this, arg) timeout = null }, delay) } }}// demo/var test = throttle(function (a) {console.log(a)}, 1000)test(1) // 不执行test(2) // 不执行test(3)=> 3test = null // 不需要时释放内存/去抖动debounce事件最后一次触发的N毫秒后触发,如电梯门。function debounce (fn, delay){ let timeout return function(){ const args = arguments clearTimeout(timeout) timeout = setTimeout(() => { fn.apply(this, args) }, delay) }}// 用法同throttle