gpt4 book ai didi

javascript - 无法退出我的 while 循环(Javascript)

转载 作者:行者123 更新时间:2023-11-29 16:12:13 25 4
gpt4 key购买 nike

作为完成代码学院类(class)后的第一个项目,我正在制作剪刀石头布游戏,但我看不出我的循环哪里出了问题。

while (userChoice !== "ROCK" | "PAPER" | "SCISSORS" | "LIZARD" | "SPOCK") {
var userChoice = prompt("Invalid choice. Please pick ROCK, PAPER, SCISSORS, LIZARD or SPOCK.");
var userChoice = userChoice.toUpperCase();
}

抱歉,如果它是平凡的。

最佳答案

userChoice !== "ROCK" | "PAPER" | "SCISSORS" | "LIZARD" | "SPOCK"

应该是

userChoice !== "ROCK" && userChoice !== "PAPER" && userChoice !== "SCISSORS" && userChoice !== "LIZARD" && userChoice !== "SPOCK"

现在它实际上是在检查 userChoice !== 0 是否是一个表达式的整个右侧,并且计算结果为 0。

在 javascript 中,| 本身就是按位或。由于按位运算仅对整数有意义,因此您的字符串会强制转换为整数,因此您基本上是在执行 0 | 0,这将是 0。

您可能正在考虑 ||,这是一个逻辑或,我可以理解您会如何思考“如果 userChoice 不是石头、布或剪刀”,但同样,不是它如何作品。您必须检查 userChoice 是否不是 Rock,并且 userChoice 是否不是 Scissors。

如果您想查看 userChoice 是否为 Rock,或者 userChoices 是否为 scissors,则可以使用 || 等。

根据评论,您可以通过执行以下操作来显着提高代码的可读性:

var choices = ["ROCK", "PAPER", "SCISSORS", "LIZARD", "SPOCK"];    
while(choices.indexOf(userChoice) == -1) {
userChoice = prompt("Invalid choice. Please pick one of: " +
choices.join(" ").toUpperCase());
}

此外,只需添加我个人最喜欢的 javascript 技巧,您可以更改

while(choices.indexOf(userChoice) == -1)

while(!~choices.indexOf(userChoice))

关于javascript - 无法退出我的 while 循环(Javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24747599/

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