Javascript 为什么while循环即使在对象引用值更改并且应该执行break语句时仍保持循环?

Javascript 为什么while循环即使在对象引用值更改并且应该执行break语句时仍保持循环?,javascript,function,oop,methods,console,Javascript,Function,Oop,Methods,Console,在执行命令sw.start()之后,当我运行sw.stop()时,它会将值更改为running.value=false,并且应该执行break语句,因为running.value为false,但不会发生这种情况 它不完全是秒表,而是停止计算程序出错,:) 在控制台中运行此脚本时会发生一些奇怪的事情: 当我运行sw.stop()时,它会工作 当我运行sw.resetit()时,它可以工作 sw.duration()也可以工作 当我运行sw.start()时,它可能会启动计算 但在运行任何其他命令

在执行命令
sw.start()
之后,当我运行
sw.stop()
时,它会将值更改为
running.value=false
,并且应该执行break语句,因为
running.value
为false,但不会发生这种情况

它不完全是秒表,而是停止计算程序出错,:)

在控制台中运行此脚本时会发生一些奇怪的事情:

  • 当我运行sw.stop()时,它会工作
  • 当我运行sw.resetit()时,它可以工作
  • sw.duration()也可以工作
  • 当我运行sw.start()时,它可能会启动计算 但在运行任何其他命令之后,控制台不接受任何输入或响应,我必须暂停从源开发工具运行的脚本,然后如果在停止响应后输入了任何命令,它将显示其他命令的输出。但是在输入sw.start()之后,控制台没有响应
  • 不管怎样,有没有什么方法可以让我编写另一个方法,以某种方式停止start()方法
  • 换句话说,我可以编写一个函数,然后从一个方法调用它来启动它,然后从另一个方法停止它。
一些您不必回答的问题:

我可以写一个函数,然后从一个方法调用它来启动它,然后从另一个方法停止它吗


如何通过调用另一个函数来停止循环的函数,该函数会更改对象或变量的值,如果设置为“false”,则会停止循环的函数,因为该函数在对象或变量值为true或false的值上循环?甚至有可能导致以下问题:

 const timmy = () => {
    while(true){ // --> never stops
        current.t += 0.01;
        if(running.value===false){
         //this block never runs??
         console.log(`stopping...`);
         break;
        }
   };
 }
运行时运行循环。值为true:

const timmy = () => { 
   while(running.value){
      current.t += 0.01;
   };
}

While loop始终至少执行一次代码

所以当你运行秒表时();对于第一次,它将无法正确执行 如果你试着用秒表跑它();有两次它会起作用

说到这里

我们必须使用

while循环中的If条件

因此,它将检查状况并
以正确的方向执行。

真正的问题是:为什么当我运行
stop()
方法时,
while()
循环没有中断?在
stop()
方法中,我更改
running.value=false的值let button={v:true};设a=1;设bc={v:false};让ls=()=>{bc.v=true;console.log(“ls被调用,现在是bc.v=“+bc.v”);};让frvr=()=>{while(button.v){a+=1;if(a==9999){console.log(“bc.v的值为”+bc.v);button.v=false;}console.log(“循环正在运行…”;}console.log(“循环已经结束”);}这是您想要尝试的代码。。。
const timmy = () => { 
   while(running.value){
      current.t += 0.01;
   };
}