javascript - Interpretación de la lógica booleana en la consola de Google Chrome

CorePress2024-01-25  11

Tengo dificultades para entender por qué el siguiente código no funciona como se esperaba:

const userInput = prompt("Enter something");

if (userInput) {
    console.log("TRUTHY");
} else {
    console.log("FALSY");
}

Sigo recibiendo palabras "VERDADERAS". no importa lo que yo haga. Entiendo la lógica de este código e incluso cuando ejecuto el archivo fuente de la clase no obtengo el resultado esperado.

Debería aparecer "FALSY" siempre que la entrada sea: 0, nula, indefinida, una cadena vacía o NaN.

¿Qué estoy haciendo mal? Gracias.

Edición 1: Resulta que me estaba adelantando. De hecho, el código debería devolver "VERDADERO" a menos que ingrese una cadena vacía.



------------------------------------

¿Qué navegador estás usando?¿gramo? porque cuando ejecuto este código en ms edge, devuelve FALSY cuando no ingreso nada. Además, userInput está configurado en un tipo de cadena de forma predeterminada y la cadena "0" es cierto ya que contiene algo. Tendrás que usar parseInt() para convertir el valor a un número entero, aunque eso no parece lo que quieres hacer. Considere buscar errores de sintaxis y verifique si su navegador está actualizado.

1

Revisé el vídeo y el código y sí, estás en lo cierto.

- Vayl

28/03/2021 a las 16:01



------------------------------------

Dado que userInput es una cadena, tenemos que comprobar su longitud para saber si está vacía

const userInput = prompt("Enter something");

if (userInput.length !== 0 && userInput == 0 && userInput == null && userInput == NaN) {
    console.log("TRUTHY");
} else {
    console.log("FALSY");
}



------------------------------------

Cambie eso if() a:

  if  (userInput == true) {
 

Es porque if(), tal como lo tienes, hace una igualdad estricta (===), por lo que los tipos de objetos coinciden.

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare