以下为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()函数将在每次调用时获得新的参数,但只有在最后一次调用后才会实际执行函数。这将有助于减少重复的函数调用和提高性能。