Вернитесь внутрь, если еще и используя толстую стрелку
Ошибка, когда я пытаюсь вернуть 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 и если.. еще синтаксический сахар, возникает ошибка. Примечание: я хочу вернуть 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'));
Появляется ошибка ниже:
(userInput === 'rock' || userInput === 'paper' || userInput === 'scissors')? return userInput : console.log('Error');
^^^^^^
SyntaxError: Unexpected token return
3 ответа
Вам необходимо указать return
в начале условного высказывания вроде:
return (userInput === 'rock' || userInput === 'paper' || userInput === 'scissors')? userInput : console.log('Error');
Существует два способа создания разных веток в JavaScript:
1) if()
оператор для ветвления оператора или блока операторов
if(cond) {
statement1;
statement2;
} else statement 3
2) Тернарный оператор, который разветвляет выражения.
cond ? expression1 : expression2
return
является утверждением, и утверждение не может быть внутри выражения. Ты либо return
весь троичный или вы используете if
,
Тройки были введены давным-давно, это не имеет ничего общего с функцией стрелки.
Ключевым моментом здесь является осознание того, что ?:
это оператор. Он оценивается так же, как любой другой оператор, такой как +
а также *
создать новое значение. Имея это в виду, вы можете понять, почему размещение return
не имеет смысла в вашей оригинальной версии. return
это команда (или, точнее, утверждение), а не значение.