以下为ChatGPT自动生成的解答,正确与否请自行判断。

BFE.devAI解答 - JavaScript 代码题
6. 手写debounce()

实现一个基本的debounce()函数,可以根据规定的时间延迟执行函数。当连续的调用发生在规定时间内,则只执行最后一次调用。

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

在上面的实现中,debounce()函数返回一个新函数,该函数使用clearTimeout()方法取消前一个正在等待执行的计时器,并设置一个新的计时器以等待规定时间。最后一次调用将调用传递给原始函数。

用法示例:

function doSomething(text) {
  console.log(`Doing something with ${text}`);
}

const debouncedFunc = debounce(doSomething, 2000);

debouncedFunc('Hello'); 
debouncedFunc('Debounce'); // 取消之前的计时器,执行下一个计时器
debouncedFunc('Function'); // 取消之前的计时器,执行下一个计时器

在上述示例中,doSomething()函数将在每次调用时获得新的参数,但只有在最后一次调用后才会实际执行函数。这将有助于减少重复的函数调用和提高性能。