节流函数和防抖函数js
时间: 2024-09-24 18:23:38 浏览: 35
节流函数和防抖函数都是JavaScript中用于限制函数执行频率的技术,它们的区别在于何时执行。
**节流函数**[^1]:
```javascript
function throttle(func, delay) {
let timeout;
return function(...args) {
clearTimeout(timeout);
timeout = setTimeout(() => func.apply(this, args), delay);
};
}
// 示例
const throttledLog = throttle(console.log, 1000); // 每隔1秒执行一次console.log
throttledLog('This will be logged after a second.');
throttledLog('Another log in one more second.');
```
**防抖函数**[^2]:
```javascript
function debounce(func, delay) {
let timeout;
return function(...args) {
if (timeout) {
clearTimeout(timeout);
}
timeout = setTimeout(() => {
func.apply(this, args);
}, delay);
};
}
// 示例
const debouncedLog = debounce(function log() {
console.log('Logged');
}, 500); // 只有在500毫秒无新的调用后才执行log()
debouncedLog();
setTimeout(debouncedLog, 400); // 这次不会立即执行,因为上次的还在延时期内
```
阅读全文