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的值但是while循环仍然在执行,控制台没有响应,我不得不暂停脚本。我发现了问题:while循环(或chrome控制台)的本质是在while循环完成执行之前不接受任何输入。我尝试编写一小段代码来检查控制台在执行while循环时是否接受输入。它不会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;
};
}