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.