この解答例はChatGPTによって生成されています,正しいかは自己判断で。 皆の投稿または 公式回答ページからも解答例が見つかるかもしれませんよ。

BFE.devでのAI解答例 - JavaScript コーディング問題
5. leading & trailingをサポートするthrottle() を実装する

以下は、leadingとtrailingのオプションを持つthrottle()の実装例です。

function throttle(func, wait, options = { leading: true, trailing: true }) {  let context, args, result  let timeout = null  let previous = 0  const { leading, trailing } = options  const later = () => {    previous = leading ? Date.now() : 0    timeout = null    result = func.apply(context, args)    if (!timeout) context = args = null  }  const throttled = function (...rest) {    const now = Date.now()    if (!previous && !leading) previous = now    const remaining = wait - (now - previous)    context = this    args = rest    if (remaining <= 0 || remaining > wait) {      if (timeout) {        clearTimeout(timeout)        timeout = null      }      previous = now      result = func.apply(context, args)      if (!timeout) context = args = null    } else if (!timeout && trailing) {      timeout = setTimeout(later, remaining)    }    return result  }  throttled.cancel = function () {    clearTimeout(timeout)    previous = 0    timeout = context = args = null  }  return throttled}