否则返回内部并使用粗箭头

时间:2018-11-27 16:50:19

标签: javascript ecmascript-6 arrow-functions syntactic-sugar

当我尝试在胖箭头函数中返回语法糖时,如果我尝试返回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

3 个答案:

答案 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是命令(或更准确地说是语句),而不是值。