[英]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.