gpt4 book ai didi

javascript - 功能重启工作不正确

转载 作者:行者123 更新时间:2023-12-02 18:23:49 25 4
gpt4 key购买 nike

我刚刚开始学习JS,写了一个石头剪刀布游戏的代码。所以我在接下来的步骤中遇到了麻烦:如果第一次用户的选择和计算机的选择相同 - 功能将再次启动。但第二次用户的选择是什么并不重要,因为程序使用第一次输入的值并忽略第二次。请解释一下我的错误在哪里。代码如下。

function compare(choice1,choice2) {
choice1=prompt("Make your choice!");
console.log("You're choosing "+choice1);

choice2=Math.random();
console.log("Computer rolls the dice and the result is "+choice2);

if (choice2 < 0.333) {
choice2="rock";
} else if (choice2 < 0.666) {
choice2="paper";
} else {
choice2="scissors";
}

console.log("That means "+choice2+".");
if (choice1===choice2) {
console.log("Ooops!Tie!");
compare();
}
if(choice1==="rock") {
if(choice2==="scissors"){
return("Your rock wins");
} else {
return("Computer's paper wins");
}
} else if (choice1==="paper") {
if(choice2==="rock") {
return("Your paper wins");
} else {
return("Computer's scissors wins");
}
} else if (choice1==="scissors") {
if(choice2==="rock") {
return("Computer's rock wins");
} else {
return("Your scissors wins");
}
} else {
return("Nice try smirky!");
}
}
compare();

最佳答案

我对全局变量的评论并不真正成立,因为我错过了您将它们声明为参数,这确实在本地范围内创建了它们。它实际上并没有创建全局变量,但您仍然应该删除参数并使用 var

无论我调用 compare 多少次或得到平局,我每次都会得到正确的响应。

您想要更改的是变量分配:

choice1=prompt("Make your choice!"); 创建一个 choice1 的全局变量,而

var choice1=prompt("Make your choice!"); 在函数的“范围”中创建一个局部变量,即每次运行它时都会被隔离。

您需要在初始化变量时(第一次分配它时)添加var。这似乎不会导致您的错误,但无论如何都是一个很好的做法。

此外,如果出现平局,您的 compare() 调用不会返回其结果。您应该确保它也返回:

if (choice1===choice2) {
console.log("Ooops!Tie!");
return compare();
}

这也会阻止您返回“Nice try smirky!”如果出现平局,因为这是它遇到的第一个 return 语句。

关于javascript - 功能重启工作不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18576172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com