坚持Javascript无限循环

时间:2013-08-09 23:18:31

标签: javascript loops while-loop infinite

我对n00b问题表示道歉,我试图查看无限循环相关问题,但它们更复杂:

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

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

我认为这个while循环只会继续迭代,而重放变量的值为1。

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

提前感谢您的任何意见!

5 个答案:

答案 0 :(得分:4)

你正在进行作业而不是比较。

变化:

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

为:

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

答案 1 :(得分:3)

在while部分使用==代替=

答案 2 :(得分:1)

你需要在你的while循环中使用==(相等)而不是=(赋值)

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

JavaScript正在做它应该做的事情。每次循环迭代时,您都会重新分配值1以重放。如果重播等于1,你真的想检查

答案 3 :(得分: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 */;
}

答案 4 :(得分:0)

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

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

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