Javascript 重新分配参数时是否存在任何问题';重新传递给函数

Javascript 重新分配参数时是否存在任何问题';重新传递给函数,javascript,Javascript,在下面的throttle功能中,timeout最终会变成一个数字,因为它被分配给setTimeout。我将它重新定义为false当它被清除时,代码工作 我没有注意到表面上的任何东西,但想知道这样做是否有任何问题,或者我可能遗漏了什么 const throttle = (fn, delay) => { let timeout; return (...args) => { if(!timeout) { timeout = setTimeout(() =&

在下面的
throttle
功能中,
timeout
最终会变成一个数字,因为它被分配给setTimeout。我将它重新定义为
false
当它被清除时,代码工作

我没有注意到表面上的任何东西,但想知道这样做是否有任何问题,或者我可能遗漏了什么

const throttle = (fn, delay) => {
  let timeout;

  return (...args) => {

    if(!timeout) { 
      timeout = setTimeout(() => {
        fn(...args);
        clearTimeout(timeout = false);
      }, delay);
    }

  }
};
守则:

clearTimeout(超时=false)
评估结果如下:

timeout=false;
clearTimeout(超时)
这意味着您调用了
clearTimeout(false)
,这是不正确的<应使用
setTimeout()
返回的超时ID调用code>clearTimeout()

它似乎可以工作,因为您从超时过期时执行的函数调用了
clearTimeout()
。调用
clearTimeout()
不起作用,但超时已经过期,JavaScript仍然会清除它

从超时回调调用
clearTimeout()
是不需要的,也没有帮助。
clearTimeout()
的目的是在超时过期之前调用它,以防止执行带有
setTimeout()
的回调集

您的代码应该是:

timeout=setTimeout(()=>{
fn(…args);
超时=假;
},延误);
代码:

clearTimeout(超时=false)
评估结果如下:

timeout=false;
clearTimeout(超时)
这意味着您调用了
clearTimeout(false)
,这是不正确的<应使用
setTimeout()
返回的超时ID调用code>clearTimeout()

它似乎可以工作,因为您从超时过期时执行的函数调用了
clearTimeout()
。调用
clearTimeout()
不起作用,但超时已经过期,JavaScript仍然会清除它

从超时回调调用
clearTimeout()
是不需要的,也没有帮助。
clearTimeout()
的目的是在超时过期之前调用它,以防止执行带有
setTimeout()
的回调集

您的代码应该是:

timeout=setTimeout(()=>{
fn(…args);
超时=假;
},延误);

什么是节流功能?它使用安全,但可读性不强。基本上,它会阻止一个功能在延迟时间过去之前被执行。什么是节流功能?它使用安全,但可读性不强。基本上,它会阻止一个功能在延迟时间过去之前被执行。哦,糟了,不敢相信我没有注意到在超时结束后调用clearTimeout。。是的,你是对的,我用了
timeout=false
而不是
clearTimeout(timeout=false)
,它仍然有效,代码更干净了。哦,天哪,真不敢相信我没有注意到在超时结束后调用了clearTimeout。。是的,你是对的,我使用了
timeout=false
而不是
clearTimeout(timeout=false)
,它仍然可以工作,代码更干净一些。