const number = prompt("Enter your number"); const txt = "You result is : "; switch (number) { case (number >= 80 && number <= 100): document.write(`${txt} A+`); break; case (number >= 70 && number <= 80): document.write(`${txt} A gread`); break; case (number >= 60 && number <= 70): document.write(`${txt} B gread`); break; case (number >= 50 && number <= 60): document.write(`${txt} C gread`); break; case (number >= 33 && number <= 50): document.write(`${txt} D gread`); break; case (number >= 0 && number <= 33): document.write(`${txt} Field !`); break; case (number > 100 || number < 0): document.write(`It's not a valid number. Please input any valid number.`); break; default: document.write(`Not input any number. Please input any number .`); break; }Con una declaración de cambio, evalúa la expresión justo después switch . En su caso, ese sería el number .
Entonces, sus casos se evalúan con el número. Esto es lo que pasará:
number es (number >= 80 && number <= 100) . El resultado de esto último es true .number , 88 se compara con true , así: 88===true .false , por lo que se evalúa el siguiente caso.Hay dos razones por las que este código no funcionará:
La primera razón es porque el método de prompt devuelve una cadena como puede ver al escribir
console.log('Type of number:', typeof number); // Expected output: Type of number: stringPuede resolver esto analizando la salida del método de solicitud de la siguiente manera
const number = parseInt(prompt("Enter your number")); La segunda razón es porque en una declaración de switch , el valor evaluado de la expresión de cambio se compara con los valores evaluados de los casos.
Significa que el valor de number (número) se compara con la expresión (number >= 80 && number <= 100) (expresión de comparación) y así sucesivamente con los demás.
Entonces, a menos que una de sus expresiones de caso produzca un número, el switch intentará evaluar el valor del number en la expresión (que siempre es verdadera), lo que significa que el switch está comparando 45 === true , sin coincidir con ninguno de los casos.
Simplemente use if / else en su lugar:
if (number >= 80 && number <= 100) document.write(`${txt} A+`); else if (number >= 70 && number <= 80) document.write(`${txt} A gread`); else if (number >= 60 && number <= 70) document.write(`${txt} B gread`); else if (number >= 50 && number <= 60) document.write(`${txt} C gread`); else if (number >= 33 && number <= 50) document.write(`${txt} D gread`); else if (number >= 0 && number <= 33) document.write(`${txt} Field !`); else if (number > 100 || number < 0) document.write(`It's not a valid number. Please input any valid number.`); else document.write(`Not input any number. Please input any number .`);