簡體   English   中英

卡在Javascript無限while循環中

[英]stuck with Javascript infinite while loop

我對n00b問題表示歉意,我嘗試遍歷與無限循環相關的問題,但問題更加復雜:

var replay = 1;
while (replay = 1) {
replay = prompt("Yes(1) or No(0) ?");
}

為什么這是一個無限循環?

我以為這個while循環只會在replay變量的值為1時才繼續迭代。

但是,即使用戶輸入為0或其他任何情況,它也不會停止。

預先感謝您的任何意見!

您正在做分​​配而不是比較。

更改:

while (replay = 1) { // Will always have a value of 1

至:

while (replay == 1) { // Will have a value of true or false

在while部分中使用==代替=

您需要在while循環中使用==(等於)而不是=(分配)

while(replay == 1) {
  //code
 }

JavaScript正在執行應有的功能。 您將重新分配值1以在每次循環迭代時重播。 您真的想在繼續之前檢查重播是否等於一。

您正在分配不簽入(replay = 1)

您需要雙等號== ,或者更好的三等號=== ,這還將檢查操作數類型的相等性。

此外,您的代碼可以更改為此(預覽: http : //jsfiddle.net/nabil_kadimi/RfdA5/ ):

var replay;
while ((replay = window.prompt("Yes(1) or No(0) ?")) === '1') {
  /* player wants to replay */;
}

甚至更好(預覽: http : //jsfiddle.net/nabil_kadimi/pdV4M/ ):

var replay;
while (replay = window.confirm("Replay?")) {
  /* player wants to replay */;
}

您想在while循環中使用===比較運算符而不是=賦值運算符。

另外,由於prompt返回一個string ,因此您應該將其與string進行比較:

var replay = "1";
while (replay === "1") {
  replay = prompt("Yes(1) or No(0) ?");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM