Volver dentro si lo demás y usando la flecha de grasa

votos
1

De error cuando intento volver userInput interior si el azúcar sintáctica demás en función de la grasa de flecha. Consejos amablemente.

Usando ES5 mi código funciona bien;

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`

Pero cuando uso ES6 grasa flecha y if..else azúcar sytactic hay un error. Nota: Quiero devolver el userInput de inmediato la primera condición de if..else comunicado evalúa.

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

El error más abajo aparece:

  (userInput === 'rock' || userInput === 'paper' || userInput === 'scissors')? return userInput : console.log('Error');
                                                                               ^^^^^^
SyntaxError: Unexpected token return
Publicado el 27/11/2018 a las 16:50
fuente por usuario
En otros idiomas...                            


3 respuestas

votos
2

Es necesario especificar returnal comienzo de la sentencia condicional como:

return (userInput === 'rock' || userInput === 'paper' || userInput === 'scissors')? userInput : console.log('Error'); 
Respondida el 27/11/2018 a las 16:52
fuente por usuario

votos
1

Hay dos maneras de crear diferentes ramas en JavaScript:

1) La if()declaración en rama una declaración o un bloque de instrucciones

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

2) El operador ternario que se ramifica expresiones .

 cond ? expression1 : expression2

returnes una declaración, y una declaración no puede estar dentro de una expresión. Que o bien returntodo el ternaria o utiliza una if.

Ternarios se introdujeron hace mucho tiempo, esto no tiene nada de tareas con la función de flecha.

Respondida el 27/11/2018 a las 16:55
fuente por usuario

votos
0

La clave aquí es darse cuenta de que ?:es un operador . Se evalúa al igual que cualquier otro operador, como +y *para crear un nuevo valor. Con esto en mente, se puede entender por qué la colocación de returnno tiene sentido en su versión original. returnes un comando (o más exactamente una declaración), no es un valor.

Respondida el 27/11/2018 a las 17:28
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more