函数防抖题解

题目链接

2627. 函数防抖 - 力扣(LeetCode)

思路

题目提到时间内再次调用需要取消上一次调用,我们从 setTimeout 里面可以知道,该函数返回一个number类型,并且会延迟执行

可以根据当前 timer 是否为 null 的值 ,知道当前是否已经有 setTimeout 在执行,如果存在 则,使用 clrearTimeout 取消,并重置 timer 的值,最后更新 timer 需要执行的代码

apply,是改变 this 指向,并执行 函数,args 是一个参数数组,所以这里使用了 fn.apply 方法来改变 this 指向并执行 fn

这里有一个小坑,setTimeout 的第一个参数需要是一个回调函数,不能直接执行 fn

代码

javascript 复制代码
/**
 * @param {Function} fn
 * @param {number} t milliseconds
 * @return {Function}
 */
var debounce = function (fn, t) {
    let timer = null
    return function (...args) {
        if (timer != null) {
            clearTimeout(timer)
            timer = null
        }
        timer = setTimeout(() => fn.apply(this, args), t)
    }
};

/**
 * const log = debounce(console.log, 100);
 * log('Hello'); // cancelled
 * log('Hello'); // cancelled
 * log('Hello'); // Logged at t=100ms
 */
相关推荐
zyplayer-doc7 小时前
VuePress类静态文档站和动态知识库怎么选:两种技术路线的适用场景
javascript·人工智能·后端·安全·智能手机
rannn_1117 小时前
【力扣hot100】链表专题|160、206、234、141、142
java·算法·leetcode·链表·面试·开发
数模竞赛Paid answer7 小时前
2026年华东杯数学建模B题医药物流安排问题解题全过程文档及程序
算法·数学建模·数据分析·华东杯
不会代码的小猴8 小时前
21. 泛型编程上
开发语言·c++·笔记·算法
紫禁玄科8 小时前
Shai-Hulud:npm生态的自我复制蠕虫风暴
前端·npm·node.js
东风破_9 小时前
后端API没写好,前端难道干等着吗?
前端
AI备案指南-满满9 小时前
大模型与算法备案全流程详解:从零到通过的完整指南
人工智能·算法·备案·大模型备案·算法备案
江畔柳前堤9 小时前
LLM 训练核心机制深度解析:Warmup、Cosine Decay 与 Perplexity 的完整知识体系
网络·人工智能·深度学习·算法·机器学习·语音识别
用户938515635079 小时前
从前后端分离到前端接口工程:React + MockJS + Vite 解析
前端·后端·全栈
一只旭宝9 小时前
细讲C加加【9】C++ std::function与std::bind详解|仿函数、绑定器、类成员绑定、占位符、成员偏移指针
开发语言·c++·算法