使用Javascript无限while循环

stuck with Javascript infinite while loop

本文关键字:循环 while 无限 Javascript 使用      更新时间:2023-09-26

我对n00b问题表示歉意,我已经尝试过处理与无限循环相关的问题,但它们要复杂得多:

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

为什么这是一个无限循环?

我认为while循环只会在重播变量的值为1时继续迭代。

然而,即使用户输入为0或其他任何情况下,它也不会停止。

提前感谢您的任何意见!

您正在进行赋值,而不是比较。

更改:

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

至:

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

在while部分中使用==而不是=

您正在分配不检查(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循环中使用==(相等)而不是=(赋值)

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

JavaScript正在做它应该做的事情。每次循环迭代时,你都会重新分配值1来重播。在继续之前,您确实希望检查重播是否等于1。

您希望在while循环中使用===比较运算符,而不是=赋值运算符。

此外,由于prompt返回string,因此应该将其与string:进行比较

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