Se supone que esta función produce exactamente 'piedra', 'papel' o 'tijeras' (la entrada no distingue entre mayúsculas y minúsculas). Pero cuando ingreso el valor incorrecto (es decir, 'papeles' con una 's' extra), mi función imprime el mensaje de error (esperado) Y un mensaje que dice "indefinido" (no esperado).
const getUserChoice = (userInput) => { userInput = userInput.toLowerCase(); if (userInput === 'rock' || userInput === 'paper' || userInput === 'scissors') { return userInput; } else { console.log('Please enter rock, paper, or scissors.') } } console.log(getUserChoice('papers')); #prints 'paper' correctly if paper is the inputEDITAR: actualicé la pregunta para que sea más clara y ya encontré la respuesta. Tiene que ver con la diferencia entre console.log y return.
Es porque su consola registra el mensaje de error en lugar de devolverlo
y cuando le pide 'Por favor ingrese piedra, papel o tijera', no devuelve nada y, por lo tanto, el retorno no está definido.
así que cambia
console.log('Please enter rock, paper, or scissors')
a
return 'Please enter rock, paper, or scissors';