我有一个简单的Rock,Paper,Scissors游戏,我已经将我的函数编写为箭头函数,并将if / else编写为三元运算符,但是它返回了错误。如果不是,它可以与香草一起使用,但不能使用三元。
const getUserChoice = userInput => {
// normalizes all inputs to lowercase
userInput = userInput.toLowerCase();
// checks whether the inputs are valid
userInput === 'rock' || 'paper' || 'scissors' ? return getUserChoice : console.log('please enter a valid entry');
};
getUserChoice('rock');
答案 0 :(得分:4)
正如其他人指出的
userInput === 'rock' || 'paper' || 'scissors' ? return getUserChoice : console.log('please enter a valid entry');
不是有效的JavaScript。它甚至不是真正有效的构造。
三元运算符用于根据条件选择A或B。
if (condition) {
return A;
} else {
return B;
}
使用的三元运算符
return condition ? A : B;
但是您返回的是函数getUserChoice
,或者您什么也没有返回,因为console.log('msg')
不能返回。
不清楚您想发生什么。如果用户的选择不是rock
,paper
或scissors
const validateUserChoice = userInput => {
// normalizes all inputs to lowercase
userInput = userInput.toLowerCase();
// checks whether the inputs are valid
const isValid = userInput === 'rock' ||
userInput === 'paper' ||
userInput === 'scissors';
if (!isValid) {
console.log('please enter a valid entry');
};
return isValid;
}
???
请注意,有更快的方法来检查userInput
是否为许多有效选项之一。一个可能是
const validInputs = {
rock: true,
paper: true,
scissors: true,
};
const validateUserChoice = userInput => {
// normalizes all inputs to lowercase
userInput = userInput.toLowerCase();
// checks whether the inputs are valid
const isValid = !!validInputs[userInput];
if (!isValid) {
console.log('please enter a valid entry');
};
return isValid;
}
将验证与错误报告相结合可能也不是最佳实践。
const validInputs = {
rock: true,
paper: true,
scissors: true,
};
const validateUserChoice = userInput => {
// normalizes all inputs to lowercase
userInput = userInput.toLowerCase();
// checks whether the inputs are valid
return !!validInputs[userInput];
};
if (!validateUserInput(someInput)) {
console.log('please enter a valid entry');
};
请注意,!!
只是将某些虚假的东西实际上是虚假的。
validInputs[userInput]
将为true
或未定义。通常这足够好,但是如果您真的希望将其设为true
或false
,则!!
会像
const userInput = 'bananas'
const temp1 = validInputs[userInput]; // temp1 = undefined
const temp2 = !temp1; // temp2 = true
const temp3 = !temp2; // temp3 = false
!!
在做什么