如果自動模式被激活,我有一個 while 函式將在自動模式下運行 ( checkBox.checked)
問題是此代碼僅在 a 和 b 都大于我的游戲限制 # ( bestof.value) 時停止。我希望它停止一次,只有其中一個不正確。
當我使用while(a || b < bestof.value)它時,直到堆疊達到其限制為止。它也不回傳任何值。
if ( checkBox.checked == true ) {
while( a && b < bestof.value ) {
myFunction();
}
};
知道我該如何解決這個問題嗎?
uj5u.com熱心網友回復:
你是想說 a 和 b 應該小于 bestof.value 嗎?
不幸的是,這不是語法的作業方式,&& 分隔陳述句,所以基本上你是在說 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 存在”沒有被列印出來,這基本上就是您在&&, 如果 a 存在之前詢問您的 while 回圈...
uj5u.com熱心網友回復:
你犯的錯誤:
while“一旦 a 或 b 之一變得大于我的游戲限制,我希望回圈停止”的條件與“運行回圈直到 a 和 b 都小于限制”相同:
while(a < bestof.value && b < bestof.value) { ... }
- 沒有必要自己將
if條件轉換/比較到布林值,JS 會自動完成,所以這就足夠了:
if (checkBox.checked) { ... }
- 你錯過了 '}'。如果您的 IDE/編輯器不這樣做,請始終比較左括號和右括號的數量。
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();
}
};
uj5u.com熱心網友回復:
嘗試切換到 while (b < bestof.value || a)
uj5u.com熱心網友回復:
嘗試以下操作,OR而不是AND:
if (checkBox.checked == true){
while( (a || b) < bestof.value){
myFunction();
}
我在 or 周圍加上了額外的括號,不確定這里是否需要它們。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/375505.html
標籤:javascript while 循环
