如果只有其中一个不正确,如何停止循环?

How to stop loop if only one of these isn't true?

我有一个 while 函数,如果自动模式被激活,它将 运行 处于自动模式 (checkBox.checked)

问题是此代码仅在 a 和 b 都大于我的游戏限制 # (bestof.value) 时才会停止。我希望它在其中只有一个不正确时停止。

当我使用 while(a || b < bestof.value) 时,它会超时,直到堆栈达到其限制。它也 returns 没有值。

if ( checkBox.checked == true ) {
    while( a && b < bestof.value ) {
       myFunction();
    }
};

知道如何解决这个问题吗?

你是说 a 和 b 应该小于 bestof.value 吗?

不幸的是,这不是语法的工作方式,&& 分隔语句,所以基本上你是在说 while a 为真而 b 小于...

你需要的是:

if (checkBox.checked == true){
    while(a < bestof.value && b < bestof.value){
    myFunction();
};

正如您正确意识到的那样,您的代码只会在 a 和 b 高于该值时停止,因为它会检查 a 是否存在并且 b 是否超过该值,所以基本上您的触发器是当 b 超过该值时。

另一个例子:

let a = 1
let b
if (a) {
  console.log("a exists")
}
if (b) {
  console.log("b exists")
}

如您所见,“b exists”没有被打印出来,这基本上就是您在 && 之前的 while 循环中询问的内容,如果 a 存在 ...

你犯的错误:

  1. while我希望循环在 a 或 b 中的一个大于我的游戏限制时停止”的条件与“”相同运行 循环直到 a 和 b 都小于 limit":
while(a < bestof.value && b < bestof.value) { ... }
  1. 不用convert/compare if condition 自己做boolean,JS会自动做,这样就够了:
if (checkBox.checked) { ... }
  1. 您错过了“}”。如果您 IDE/editor 不这样做,请始终比较左括号和右括号的数量。
if (checkBox.checked == true){
    while(a && b < bestof.value) {
        myFunction();
//   ↑ here you forget to close while body
};

另外: 您始终可以使用 break 关键字停止任何循环:

white(condition) {
  if (needToStop) { break; }
}

结论:您的代码应如下所示:

if (checkBox.checked) {
    while(a < bestof.value && b < bestof.value) {
        myFunction();
    }
};