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 部分の==
代わりに使用します。=
チェックインではなく割り当てています (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 を replay に再割り当てしています。続行する前に、リプレイが 1 に等しいかどうかを確認する必要があります。
while ループで代入演算子===
の代わりに比較演算子を使用します。=
また、 a をprompt
返すため、 astring
と比較する必要がありますstring
。
var replay = "1";
while (replay === "1") {
replay = prompt("Yes(1) or No(0) ?");
}