箭头函数中的三元运算符
Ternary Operator inside an Arrow Function
我有一个简单的剪刀石头布游戏,我将函数编写为箭头函数,将 if/else 编写为三元运算符,但 returns 出错。它适用于香草 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');
正如其他人指出的那样
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;
但是你 returning getUserChoice
这是函数,或者你 return 什么都没有,因为 console.log('msg')
不是 return 的东西。
不清楚你想要发生什么。如果用户的选择不是 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
!!
正在做什么
我有一个简单的剪刀石头布游戏,我将函数编写为箭头函数,将 if/else 编写为三元运算符,但 returns 出错。它适用于香草 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');
正如其他人指出的那样
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;
但是你 returning getUserChoice
这是函数,或者你 return 什么都没有,因为 console.log('msg')
不是 return 的东西。
不清楚你想要发生什么。如果用户的选择不是 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
!!
正在做什么