function playerSelection() {
let choice = prompt("Enter you choice.");
while(choice != "rock" && choice != "paper" && choice != "scissor"){
alert("Wrong entry");
playerSelection();
}
return choice;
}
这段代码在你输入一个使while循环条件为真的字符串之前都能正常工作。一旦它在一个不正确的输入之后进入while循环,并提示你输入另一个字符串,即使你输入了一个正确的字符串,它也会一直显示“错误输入”警报,并显示提示,直到你重新加载页面。这是怎么回事?
我试着操作逻辑运算符,但似乎没有帮助。我的猜测是它与递归有关,但我不知道它是什么。
4条答案
按热度按时间llew8vvj1#
你不需要再次调用这个函数。“prompt”-方法已经做了你想做的事情(我猜的)。这样做吧:
quhf5bfb2#
你的变量应该在函数之前声明如下:
zte4gxcn3#
这是因为每一个对
playerSelection()
的新调用都会创建一个新的调用上下文,它存储了自己的局部变量和参数。或者如果你想用递归
yvgpqqbh4#
playerSelection()函数的问题是它递归地调用自己,而不给用户输入有效选择的机会。返回choice语句永远不会到达,因为函数一直调用自己,直到用户输入有效选择。
下面是playerSelection()函数的修正版本,它应该可以按预期工作: