javascript - 如果字符串等于多个字符串匹配
问题描述
所以我一直在运行下面的 JavaScript 代码
const getUserChoice = userInput => {
userInput = userInput.toLowerCase();
if (userInput === 'rock' || 'paper' || 'scissors') {
return userInput
} else {
console.log('Error: please give relevant input \'rock\' \'paper\' or \'scissors\'.')
}
}
getUserChoice('spock')
console.log(getUserChoice('paper'))
该代码确实正确打印出纸张,但它不打印来自 else 条件的 console.log 错误,条件是第一次调用带有“spock”的函数
解决方案
一个很常见的错误,你不能这样嵌套:
userInput === 'rock' || 'paper' || 'scissors'
你需要 :
if ( userInput === 'rock' || userInput === 'paper' || userInput === 'scissors' ) {
或者如果你想用一点RegExp.prototype.test()来区分大小写i
:
if ( /^(rock|paper|scissors)$/i.test(userInput) ) {
或者如果你喜欢 Arrays 而不是使用Array.prototype.includes():
if ( ["rock", "paper", "scissors"].includes(userInput) ) {
推荐阅读
- discord - 如何从 discord.py 中的昵称获取用户 ID?
- python - 我怎样才能为这个函数写一个递归?
- java - Java - 返回一维或二维数组
- gradle - org.spockframework.runtime.SpockEngine 在升级 Groovy 和 Spock 时无法获取公共无参数构造函数
- sas - SAS中的proc summary可以一次分析多个变量吗?
- file-upload - 经典的 ASP 文件上传问题
- c# - 如何在 dotnet 中使用 OData 在 post api 中提供 json 类型的请求
- node.js - 节点 - 数组未清空
- reactjs - 类型参数不可分配给类型问题的参数
- c# - 我无法使用 config.Save() 写入 ProgramData 中的文件