我的功能无法重启的原因是什么?
What is the reason my function wont restart?
一切都很好,但当我试图重新运行该功能时,它被卡在警报框上,我做错了什么,有人能解释为什么会发生这种情况吗?您可以查看代码中的注释,以查看出现此问题的区域
var userChoice = prompt("Do you choose rock, paper or scissors?");
var computerChoice = Math.random();
if (computerChoice < 0.34) {
computerChoice = "rock";
} else if(computerChoice <= 0.67) {
computerChoice = "paper";
} else {
computerChoice = "scissors";
} console.log("Computer: " + computerChoice);
var compare = function(choice1,choice2){
if (choice1 === choice2){
return "The result is a tie!";
}else if (choice1 === "rock"){
if(choice2 === "scissors"){
return("rock wins");
}else{
return("paper wins");
}
}else if (choice1 === "paper"){
if(choice2 === "rock"){
return("paper wins");
}else{
return("scissors wins");
}
}else if(choice1 === "scissors"){
if(choice2 === "rock"){
return("rock wins");
}else{
return("scissors wins");
}
}else if (choice1 != "rock"&&"paper"&&"scissors"){
alert("not a viable input,please try again");
compare(userChoice,computerChoice);
//calling the function here makes the alert box repeatedly pop up
}
};
compare(userChoice,computerChoice);
您可以设置一个标志并将所有内容放入while循环中。
var finished = false;
var compare = function (choice1, choice2) {
if (choice1 === choice2) {
finished = true;
return "The result is a tie!";
} else if (choice1 === "rock") {
if (choice2 === "scissors") {
finished = true;
return ("rock wins");
} else {
finished = true;
return ("paper wins");
}
} else if (choice1 === "paper") {
if (choice2 === "rock") {
finished = true;
return ("paper wins");
} else {
finished = true;
return ("scissors wins");
}
} else if (choice1 === "scissors") {
if (choice2 === "rock") {
finished = true;
return ("rock wins");
} else {
finished = true;
return ("scissors wins");
}
} else if (choice1 != "rock" && "paper" && "scissors") {
alert("not a viable input,please try again");
finished = false;
//compare(userChoice, computerChoice); This causes recursion. Not necessary.
}
};
while (!finished) {
var userChoice = prompt("Do you choose rock, paper or scissors?");
var computerChoice = Math.random();
if (computerChoice < 0.34) {
computerChoice = "rock";
} else if (computerChoice <= 0.67) {
computerChoice = "paper";
} else {
computerChoice = "scissors";
}
console.log("Computer: " + computerChoice);
alert(compare(userChoice, computerChoice));
}
看看这个小提琴http://jsfiddle.net/7p94axhp/
相关文章:
- 这是什么 ==- javascript 运算符
- 我的单元测试选项是什么
- 打破承诺链的好方法是什么
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- Javascript中的空白是什么
- 是什么让一个“;Uncaught RangeError:超过了最大调用堆栈大小“;错误(Chrome,在其他浏览器中显示
- 在JavaScript中拆分日期字符串的更好方法是什么
- 将jQuery.ech()方法转换为本地JavaScript抽象的最佳方法是什么
- MDN文档中关于弄清楚XUL元素的段落是什么意思:“如何将覆盖扩展转换为无重启”
- requestAnimationFrame的目的是什么?它对重绘时间没有任何影响
- 关于 JavaScript 发起的重定向的最终结论是什么?
- chrome.identity.launchWebAuthFlow的正确重定向URL是什么
- 我的功能无法重启的原因是什么?
- 在 PaperJS 中缩放后重置形状大小的最有效方法是什么?
- 在React组件中进行重定向的合适生命周期阶段是什么?
- 在firefox中,在选项卡重定向之前获取URL的方法是什么
- 重置模态内容的正确方法是什么?
- iOS上Chrome中"不支持"的Facebook OAuth重定向方法的正确位置是什么
- Meteor:重定向后的最终位置/URL是什么
- 在登录过程中防止重定向到Dropbox页面的技术是什么