Javascript JS。setInterval不增加外部作用域中变量的值
我试图让计时器更新所有Javascript JS。setInterval不增加外部作用域中变量的值,javascript,timer,closures,Javascript,Timer,Closures,我试图让计时器更新所有let变量的值。但不幸的是,我的setIntervalfunction不想这样做 我的问题在哪里?谢谢 函数定义间隔(间隔小时=1,精度=3600,禁用间隔=900,时间=200000){ 设区间=0 让timeLeftInInterval=0 设timePercent=0 设timeDisabled=0 设置间隔(()=>{ 间隔=间隔小时*精度; timeLeftInInterval=(时间百分比间隔); log(interval,'interval',timeLef
let
变量的值。但不幸的是,我的setInterval
function不想这样做
我的问题在哪里?谢谢
函数定义间隔(间隔小时=1,精度=3600,禁用间隔=900,时间=200000){
设区间=0
让timeLeftInInterval=0
设timePercent=0
设timeDisabled=0
设置间隔(()=>{
间隔=间隔小时*精度;
timeLeftInInterval=(时间百分比间隔);
log(interval,'interval',timeLeftInInterval,'timeLeftInInterval',timeDisabled,'timeDisabled',timePercent,'timePercent')//3600,2000,1600,59输出
如果(禁用间隔>=timeLeftInInterval){
timeDisabled=disableInterval-timeLeftInInterval;
时间百分比=(时间禁用/禁用间隔)*100;
}否则{
timeDisabled=间隔-timeLeftInInterval;
timePercent=(timeDisabled/(interval++-disableInterval)*100);
间歇++
}
}, 1000)
}
定义区间()代码>可能的问题:
interval=intervalInHours*精度代码>每次都将重置为3600。将其移动到setInterval上方
您并没有做任何事情来更改if
语句中的值,这不会影响任何内容。更改timeDisabled
和timePercent
不会进一步影响任何内容。它将在每次超时后给出相同的值。您是否缺少间隔+
您在else
语句中执行了两次interval++
请描述您期望这些变量如何随时间变化。FWIW,这可能都是由于您在回调函数的第一行将interval
重置为常量。intervalInHours*精度
永远不会改变,因此interval
不会改变<代码>时间
从不更改,因此timeLeftInInterval
不会更改。我不知道你在这里期望什么:/code你考虑过调试它吗?@Alnitak我说了所有四个变量-让间隔=0
让timeLeftInInterval=0
让timePercent=0
让timeDisabled=0-它们的计时器始终等于它们自己的值请阅读我的再次评论。它们总是等于这些值,因为代码就是这样做的。您需要描述这些变量的预期值,因为在编写时,我们无法猜测代码的预期行为。不要只说“我想改变数字”。描述他们应该如何改变。