Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何基于值更改停止setInvterval?_Javascript_Setinterval - Fatal编程技术网

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