Вернитесь внутрь, если еще и используя толстую стрелку - PullRequest
0 голосов
/ 27 ноября 2018

Ошибка, когда я пытаюсь вернуть 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 fat-стрелка и если .. еще синтаксический сахар есть ошибка.Примечание. Я хочу вернуть userInput сразу после того, как будет выполнено первое условие оператора if..else.

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'));

Появится error ниже:

  (userInput === 'rock' || userInput === 'paper' || userInput === 'scissors')? return userInput : console.log('Error');
                                                                               ^^^^^^
SyntaxError: Unexpected token return

Ответы [ 3 ]

0 голосов
/ 27 ноября 2018

Существует два способа создания разных веток в JavaScript:

1) Оператор if() для перехода оператор или блок операторов

 if(cond) {
   statement1;
   statement2;
 } else statement 3

2) Тернарный оператор, который разветвляет выражений .

 cond ? expression1 : expression2

return, является оператором, и оператор не может быть внутри выражения.Вы либо return вся троица, либо используете if.

Тройки были введены давно, это не имеет ничего общего с функцией стрелки.

0 голосов
/ 27 ноября 2018

Ключом здесь является понимание того, что ?: является оператором .Он оценивается так же, как любой другой оператор, такой как + и *, для создания нового значения.Имея это в виду, вы можете понять, почему размещение return не имеет смысла в вашей исходной версии.return - это команда (или, точнее, оператор), а не значение.

0 голосов
/ 27 ноября 2018

Вам нужно указать return в начале условного оператора, например:

return (userInput === 'rock' || userInput === 'paper' || userInput === 'scissors')? userInput : console.log('Error'); 
...