当我尝试在胖箭头函数中返回语法糖时,如果我尝试返回userInput时出错。请指教。
使用 ES5 ,我的代码可以正常工作;
userInput = userInput.toLowerCase();
if (userInput === 'rock' || userInput === 'paper' || userInput === 'scissors' ) {
return userInput;
} else {
console.log('Error!');
}
console.log(getUserChoice('Paper')); // console prints 'paper'
console.log(getUserChoice('fork')); // console prints 'Error!' and `undefined`
但是,当我使用 ES6 胖箭头并且如果..其他语法糖存在错误。 注意:我想立即返回if..else语句的第一个条件求值的 userInput 。
const getUserChoice = userInput => {
userInput = userInput.toLowerCase();
(userInput === 'rock' || userInput === 'paper' || userInput === 'scissors')? return userInput : console.log('Error');
};
console.log(getUserChoice('Paper'));
console.log(getUserChoice('fork'));
出现以下错误:
(userInput === 'rock' || userInput === 'paper' || userInput === 'scissors')? return userInput : console.log('Error');
^^^^^^
SyntaxError: Unexpected token return
答案 0 :(得分:2)
您需要在条件语句的开头指定return
,例如:
return (userInput === 'rock' || userInput === 'paper' || userInput === 'scissors')? userInput : console.log('Error');
答案 1 :(得分:1)
有两种方法可以在JavaScript中创建不同的分支:
1)if()
语句分支一个语句或语句块
if(cond) {
statement1;
statement2;
} else statement 3
2)分支表达式的三元运算符。
cond ? expression1 : expression2
return
是一个语句,并且语句不能位于表达式内。您要么return
整个三元组,要么使用if
。
三元组是很久以前介绍的,它与箭头功能无关。
答案 2 :(得分:0)
此处的关键是要认识到?:
是运算符。就像其他任何运算符(如+
和*
一样对它进行评估以创建新值)。考虑到这一点,您可以了解为什么在原始版本中return
的位置没有意义。 return
是命令(或更准确地说是语句),而不是值。