Javascript 如何基于值更改停止setInvterval?
有人能给我解释一下为什么这个循环从未停止过吗Javascript 如何基于值更改停止setInvterval?,javascript,setinterval,Javascript,Setinterval,有人能给我解释一下为什么这个循环从未停止过吗 const interval2 = setInterval(() => { const a = "false" if (a == "true"){ clearInterval(interval2) } console.log("Hello"); a == "true" }, 1000); 输出: 你好 你好 你好 你好 据我所知,clearInterval应该终止该间隔。但它一直在
const interval2 = setInterval(() => {
const a = "false"
if (a == "true"){
clearInterval(interval2)
}
console.log("Hello");
a == "true"
}, 1000);
输出:
你好
你好
你好
你好
据我所知,clearInterval应该终止该间隔。但它一直在继续。这是因为每次
setInterval
重复,a都被设置为“false”,因此a==“true”
永远不会满足,循环也永远不会停止。可以通过在外部声明变量来解决此问题
此外,我们不能将值重新分配给const
变量,因此需要使用let
此外,要将a
的值重置为“true”
请使用a=“true”
而不是a==“true”
让a=“false”
const interval2=setInterval(()=>{
如果(a==“真”){
清除间隔(间隔2)
}
console.log(“你好”);
a=“正确”
}, 2000);代码>这是因为每次setInterval
重复时,a被设置为“false”,因此a==“true”
永远不会满足,并且该循环永远不会停止。可以通过在外部声明变量来解决此问题
此外,我们不能将值重新分配给const
变量,因此需要使用let
此外,要将a
的值重置为“true”
请使用a=“true”
而不是a==“true”
让a=“false”
const interval2=setInterval(()=>{
如果(a==“真”){
清除间隔(间隔2)
}
console.log(“你好”);
a=“正确”
}, 2000);代码>在第二行,将“false”赋值为常数,然后检查它是否等于“true”。您需要将a声明为另一个作用域中的变量,在interval的回调之外
让a=“false”
const interval2=setInterval(()=>{
如果(a==“真”){
清除间隔(间隔2)
}
console.log(“你好”);
a=“正确”
}, 1000);
同样在回调的最后一行,您有一个奇怪的语句:a==“true”。它可能应该是a=“true”在第二行中,将“false”赋值为常数,然后检查它是否等于“true”。您需要将a声明为另一个作用域中的变量,在interval的回调之外
让a=“false”
const interval2=setInterval(()=>{
如果(a==“真”){
清除间隔(间隔2)
}
console.log(“你好”);
a=“正确”
}, 1000);
同样在回调的最后一行,您有一个奇怪的语句:a==“true”。它可能应该是a=“true”,因为const a
在每个间隔上被再次声明为false
。因为const a
在每个间隔上被再次声明为false
。