函数节流和函数防抖都是用来优化函数执行的,从而减少函数执行次数,提高性能以及用户体验。
函数节流指的是在一定时间内只执行一次函数。比如,在滚动事件中,每隔一定时间执行一次函数。这样可以减少函数的执行次数,从而提高性能。函数节流的实现可以通过设置定时器来实现。
以下是示例代码:
function throttle(fn, wait) { let timer = null; return function() { if (!timer) { timer = setTimeout(() => { fn.apply(this, arguments); timer = null; }, wait); } } }
// 调用 window.addEventListener('scroll', throttle(function() { // 执行需优化的函数 }, 200));
函数防抖指的是在一定时间内,如果多次触发函数,则只执行一次函数。比如,在搜索框输入时,如果一直输入,我们只需要在最后一次输入后才执行搜索函数。函数防抖的实现可以通过设置定时器和清除定时器来实现。
以下是示例代码:
function debounce(fn, delay) { let timer = null; return function() { clearTimeout(timer); timer = setTimeout(() => { fn.apply(this, arguments); }, delay); } }
// 调用 const searchInput = document.querySelector('#search'); searchInput.addEventListener('input', debounce(function() { // 执行搜索函数 }, 500));