Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
3
respuestas

Duda con prompt

Al momento de realizar el desafio 2 realice los ejercicios de esta manera:

  1. Verifica si un número ingresado por el usuario es positivo o negativo. Muestra una alerta informativa. let numero = prompt("Introduce un número:"); if (numero > 0) { alert ("El número es positivo"); } else if (numero < 0) { alert ("El número es negativo"); } else { alert ("El número es 0"); }

  2. Crea un sistema de puntuación para un juego. Si la puntuación es mayor o igual a 100, muestra "¡Enhorabuena, has ganado!". En caso contrario, muestra "Inténtalo de nuevo para ganar." let puntuacion = prompt("Introduce tu puntuación:"); if (puntuacion >= 100) { alert('¡Felicidades, has ganado!'); } else { alert('Inténtalo nuevamente para ganar.'); }

Pero al momento de pedirle a la IA que me los revise porque los hice de diferente manera a como los resolvio el instructor me dice "recuerda que el valor ingresado a través de prompt es una cadena de texto. Para que la comparación funcione correctamente, debes convertirlo a un número. " Es decir debo incluir numero = Number(numero) en el segundo ejercicio y puntuacion = Number(puntuacion) en el tercero, pero no vi que esto se hiciera en el video de la clase y aún asi el código funcionaba. Alguien por favor puede explicarme, gracias.

3 respuestas
solución!

Eso ocurre debido a una característica de JavaScript llamada coerción de tipos. Aunque prompt siempre devuelve un valor de tipo string, cuando realizas una operación matemática o una comparación con un número explícito, JavaScript intenta convertir automáticamente la cadena a un número para que la operación tenga sentido. Por esta razon en los ejercicios de los videos no de realiza un parseo explisito del valor recibido por el prompt (parseInt() o number(). ojala se entienda....

Lo que te recomienda la IA es que hagas un parseInt() o Number() como te parezca mas comodo.

let numero = prompt("Introduce un numero:");

// Convertir a numero
numero = Number(numero);

if (numero > 0) {
    alert("El numero es positivo");
} else if (numero < 0) {
    alert("El numero es negativo");
} else if (numero === 0) {
    alert("El numero es 0");
} else {
    alert("No ingresaste un numero valido");
}

Caso Number(): Convierte la cadena ingresada a un numero. Si el valor no es un numero valido, devolvera "NaN".

let numero = prompt("Introduce un numero:");

// Convertir a numero entero
numero = parseInt(numero);

if (numero > 0) {
    alert("El numero es positivo");
} else if (numero < 0) {
    alert("El numero es negativo");
} else if (numero === 0) {
    alert("El numero es 0");
} else {
    alert("No ingresaste un numero valido");
}

Caso parseInt(): Convierte la cadena ingresada en un numero entero. Si el valor ingresado no es un numero valido o tiene decimales, solo tomara la parte entera.

Porque? El codigo te sigue funcionando porque JS intenta hacer las conversiones adecuadas en el momento de realizar las comparaciones o las operaciones matematicas. A pesar de que puede funcionar, es recomendable hacer las conversiones explicitas para evitar errores inesperados y asegurarte de que los datos se traten correctamente.

Mil gracias por tu respuesta. Me ha quedado clara la información.