Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

130
Vistas
Piedra, papel o tijera y la comparación !==

Quería intentar usar el !== condicional. ¿Por qué este código registra 'Opción no válida' e indefinido?

 const getUserChoice = userInput => { userInput = userInput.toLowerCase(); if (userInput !== 'rock' || userInput !== 'paper' || userInput !== 'scissors') { console.log('Invalid choice'); } else { return userInput; } }; console.log(getUserChoice('paper'));

Quería probar la instrucción !== en lugar de === if para un juego de piedra, papel o tijera. ¿El problema es la sintaxis o la lógica?

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Esta condición siempre será verdadera, independientemente del valor de userInput :

 userInput !== 'rock' || userInput !== 'paper' || userInput !== 'scissors'

Quiere usar && en lugar de || , como esto:

 userInput !== 'rock' && userInput !== 'paper' && userInput !== 'scissors'

De esa manera, solo verá una Invalid choice no válida si userInput no es uno de los tres valores permitidos.

Por último, está viendo undefined porque está registrando el resultado de getUserChoice , pero getUserChoice no devuelve nada cuando se presiona la instrucción if .

about 4 years ago · Juan Pablo Isaza Denunciar

0

Obtiene una Invalid choice debido a la evaluación de cortocircuito . Esto significa que la expresión lógica OR (||) se evalúa de izquierda a derecha y cualquiera de los valores de la izquierda obtiene un valor real, luego el resto no se evaluará.

 userInput !== 'rock' || userInput !== 'paper' || userInput !== 'scissors'

Cuando userInput es igual a paper y ejecuta la condición anterior, el primero obtiene un valor real porque paper y rock no son lo mismo. Entonces, el resto de ellos no serán evaluados (userInput !== 'paper' || userInput !== 'scissors') . Esa condición se vuelve verdadera y registra una invalid choice . Y en la condición en que no devolvió nada, entonces la función getUserChoice devuelve undefined .

about 4 years ago · Juan Pablo Isaza Denunciar

0

Su función no devuelve nada en el camino verdadero si, solo en el camino más.

También el inverso de if(x==="a" || x==="b" || ...) (también conocido como if(!(...)) ) es if(x!=="a" && x!=="b" && ...) necesitas intercambiar || a && y && a || también, no solo === a !== y !== a === .

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda