Confusión al usar el operador != junto al operador || en JavaScript.
Soy un traductor de español que traduce documentos de TI. Traduce lo siguiente al español. No traduzcas el código y la salida en markdown.
Soy nuevo en JavaScript y en la programación. Estoy escribiendo un programa para jugar a piedra, papel o tijeras, y quiero captar cuando un usuario no elige una elección correcta.
Aquí está mi función userChoice(), con una declaración if para capturar elecciones incorrectas.
Cuando llamo a la función tal como está escrita, siempre activa la declaración if.
Solo ocurre esto si uso el operador || para definir múltiples comparaciones !=. Si solo uso una comparación !=, sin el operador ||, funciona bien.
Entonces parece que no entiendo muy bien cómo usar || y != juntos.
Editar: Pensé que || probaba el primer valor falsy, y && probaba el primer valor truthy. Lo tenía al revés, y debería haber usado && para encontrar el primer valor falsy. Gracias por señalar mi error.
davy.ai
Solución
El problema con la instrucción if en la función
userChoice()
es con el operador lógico||
.Cuando se utiliza
||
, la condición será verdadera si al menos una de las comparaciones es verdadera. En este caso, la condición será verdadera sichoice
no es igual a'rock'
O no es igual a'paper'
O no es igual a'scissors'
. Dado quechoice
no puede ser igual a los tres al mismo tiempo, la condición siempre se evalúa como verdadera.Para solucionar esto, es necesario cambiar el operador de
||
a&&
. Con&&
, la condición es verdadera solo si todas las comparaciones son verdaderas.Así es como debería lucir la función
userChoice()
actualizada:Con esta función actualizada, la instrucción if detecta correctamente la entrada de usuario no válida y la instrucción else registra la elección del usuario y la devuelve.