对于 n00b 问题,我深表歉意,我尝试过查看与无限循环相关的问题,但它们要复杂得多:
var replay = 1;
while (replay = 1) {
replay = prompt("Yes(1) or No(0) ?");
}
这怎么会是无限循环?
我认为这个 while 循环只会在 replay 变量的值为 1 时继续迭代。
但是,即使用户输入为 0 或其他任何内容,它也不会停止。
提前感谢您的任何意见!
对于 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 循环中使用 == (equality) 而不是 = (assignment)
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
返回 a string
,您应该与 a 进行比较string
:
var replay = "1";
while (replay === "1") {
replay = prompt("Yes(1) or No(0) ?");
}