正面或反面游戏javascript do/while循环

正面或反面游戏javascript do/while循环,javascript,loops,variables,do-while,prompt,Javascript,Loops,Variables,Do While,Prompt,我正在尝试使用do/while循环制作一个基本的正面或反面游戏。我的问题是,我的提示似乎不会影响我的变量,因为无论我键入什么,它都会进入下一节,然后根本不会循环。我错过什么了吗?我做错了什么 var userChoice; var playAgain; do { playAgain = prompt("Do you want to play Heads or tails?"); } while (playAgain === "Yes") { userChoice = promp

我正在尝试使用do/while循环制作一个基本的正面或反面游戏。我的问题是,我的提示似乎不会影响我的变量,因为无论我键入什么,它都会进入下一节,然后根本不会循环。我错过什么了吗?我做错了什么

var userChoice;
var playAgain;

do {
    playAgain = prompt("Do you want to play Heads or tails?");
}
while (playAgain === "Yes") {
    userChoice = prompt("Choose Heads or Tails.");
    if (userChoice === "Heads") {
        coin = Math.random();
        if (coin <= 0.5) {
            console.log("You Win!");
        }
        else {
            console.log ("You lose");
        }
    }
    if (userChoice === "Tails") {
        coin = Math.random();
        if (coin > 0.5) {
            console.log("You Win!");
        }
        else {
            console.log("You lose");
        }
    }
    playAgain = prompt("Would you like to play again?");
};
var用户选择;
再次播放;
做{
playreach=prompt(“您想玩正面还是反面游戏?”);
}
同时(再次播放==“是”){
userChoice=prompt(“选择正面或反面”);
if(userChoice==“Heads”){
coin=Math.random();
如果(硬币0.5){
log(“你赢了!”);
}
否则{
log(“你输了”);
}
}
playreach=提示(“您想再次播放吗?”);
};

您应该这样做:

var用户选择;
再次播放;
playreach=prompt(“您想玩正面还是反面游戏?”);
同时(再次播放==“是”){
userChoice=prompt(“选择正面或反面”);
if(userChoice==“Heads”){
coin=Math.random();
如果(硬币0.5){
警惕(“你赢了!”);
}
否则{
警惕(“你输了”);
}
}
playreach=提示(“您想再次播放吗?”);

}
您混淆了
do while
while
循环的语法

do while
循环是

do { block } while (condition)
while (condition) { block }
while
循环是

do { block } while (condition)
while (condition) { block }
你试图写一个不存在的混合体,这种形式

do { block1 } while (condition) { block2 }
JS解析器将解释为:

do { block1} while (condition);
{ block2 }
其中分号由自动分号插入机构插入。换句话说,
block1
将继续反复执行,只要
条件
为真。然后,也只有在那时,它才能继续执行
块2

您可以通过在prompt语句上放置一个断点并逐步查看代码来调试这个问题

或者,在代码上运行一个类似jshint的程序,它将报告

line 7, col 28, Missing semicolon
这会给你关于这个问题的线索


解决方案是使用正确的语法重写代码,很可能是一个普通的
while
循环。

检查
do while
循环的语法。或者,在调试器中,在
prompt
语句上放置一个断点,并逐步遍历代码以查看它正在执行的操作。或者,在代码上运行类似于
jshint
的程序,它将报告
第7行第28列缺少分号。
,这将为您提供有关问题的线索。当不满足while条件时,do/while循环在do语句下执行操作。确切地说,应该说do/while循环在do语句下执行一次操作,然后在满足
while
条件时重复该操作。