我对n00b问题表示道歉,我试图查看无限循环相关问题,但它们更复杂:
var replay = 1;
while (replay = 1) {
replay = prompt("Yes(1) or No(0) ?");
}
为什么这是一个无限循环?
我认为这个while循环只会继续迭代,而重放变量的值为1。
然而,即使用户输入为0,或者其他任何事情,它也不会停止。
提前感谢您的任何意见!
答案 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) ?");
}