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)
,它仍然可以工作,代码更干净一些。