【发布时间】:2022-01-01 15:17:23
【问题描述】:
我是 JavaScript 和编程新手。我正在编写一个玩石头剪刀布的程序,我想在用户未能输入正确选择时捕捉到。
这是我的 userChoice() 函数,带有一个 if 语句来捕获不正确的选择。
function userChoice() {
let choice = prompt('Choose rock, paper, or scissors.', 'rock')
// Convert user input to lowercase
choice = choice.toLowerCase()
// If the user doesn't choose 'rock', 'paper', or 'scissors'...
if (choice != 'rock' ||
choice != 'paper' ||
choice != 'scissors') {
alert('Please choose a valid choice.') // ... ask them to make a valid choice.
return userChoice(); // call the userChoice() function again.
} else {
console.log(`Player1 chooses ${choice}`)
return userChoice()
}
}
当我按照写的方式调用函数时,它总是触发 if 语句。
只有在我使用 || 时才会这样做运算符来定义多个 != 比较。如果我只使用一个 != 比较,没有 ||运算符,它工作正常。
if (choice != 'rock') // Works fine!
看来我不是很了解如何使用||和 != 在一起。
编辑:我以为 ||测试第一个假值, && 测试第一个真值。我把它倒过来了,应该用 && 来找到第一个假值。感谢您指出我的错误。
【问题讨论】:
-
你说的是“如果它不是石头、不是纸或者不是剪刀”,这总是正确的,因为即使它是石头,它也不是剪刀。你应该使用“如果它不是石头而且它不是纸而且它不是剪刀”。并且是 &&,而不是 ||。
-
您可以使用
array#includes来检查值是否介于石头、纸和剪刀之间。!['rock', 'paper', 'scissors'].includes(choice) -
想想逻辑 ...
A not equal 1 OR A not equal 2总是正确的,因为A一次只能等于一个值
标签: javascript conditional-statements logical-operators