OA辅助 / 面试训练复盘

Salesforce OA 面试真题解析:JavaScript 中实现 Debounce(防抖)

实现 JavaScript 的 debounce:返回一个新函数,延迟 delay 毫秒后才执行,期间再次调用则重置计时器。用闭包保存定时器并每次清除重置。

防抖实现:调用、计时器、刷新。原创主题示意图。
训练主题配图 · 非客户现场证明

题目描述

实现 debounce(fn, delay),返回一个新函数。新函数被调用时不立即执行,而是延迟 delay 毫秒;如果在延迟期间再次被调用,则重新计时,只有最后一次调用在安静期结束后才真正执行。

解题思路

用闭包保存 timer。每次调用先清除已有 timer,再设置一个新的 setTimeout,延迟执行原函数。可选支持立即执行与取消。核心是「重复调用重置计时」。

function debounce(fn, delay) {
  let timer = null;
  return function (...args) {
    clearTimeout(timer);
    timer = setTimeout(() => {
      fn.apply(this, args);
    }, delay);
  };
}

复杂度与易错点

时间、空间均为 O(1)(一个计时器)。this 与参数要在 setTimeout 回调里正确透传,否则原函数拿不到调用上下文;连续触发时 clearTimeout 必须先于新 setTimeout。

FAQ

为什么要 clearTimeout 而不是只覆盖 timer?

直接覆盖会让旧的计时器仍然触发,导致延迟期间内多次执行。clearTimeout 先取消上一次定时,才能保证只有最后一次调用生效。

参考来源

联系 VOPathway

如果你希望把这套方法用于自己的 OA 或 VO 准备,可以把目标岗位、当前阶段、面试时间和主要难点发给 VOPathway,我们会据此安排针对性的练习与复盘。

  • 微信:Coding0201
  • 邮箱:[email protected]
  • Telegram:@OAVOProxy
  • WhatsApp:+86 178 6396 8105

可提供 OA辅助、OA辅导、VO辅助与 VO辅导。文章用于训练参考,不代表相关公司的官方流程;实际安排请以候选人收到的通知为准。

每一步,都更接近准备充分的自己。

本文用于面试准备与训练复盘。公司名称仅用于标识题型素材主题,不代表官方合作或录用承诺。

预约一次训练复盘 ↗