Estoy tratando de escribir un script simple que observe una calificación de número de crédito y muestre la calificación de texto correspondiente. La declaración if-else se interrumpe cuando llego a la segunda declaración else/if y no puedo entender por qué, por lo que cualquier cosa por encima de 601 simplemente dice "POOR".
credit = 690; if (credit <= 600) { document.write("VERY POOR"); } else if (credit >= 601 || credit <= 657){ document.write("POOR"); } else if (credit >= 658 || credit <= 719){ document.write("FAIR"); } else if (credit >= 720 || credit <= 780){ document.write("GOOD"); } else { (credit >= 781 || credit <= 850); document.write("EXCELLENT"); }El problema de tu código es que cuando codificas:
else if (credit >= 601 || credit <= 657){ document.write("POOR"); }Esto es cierto, por lo que dirá POBRE, porque se trata de una cláusula que significa (Verdadero o Falso) = (Falso o Verdadero) = Verdadero:
La solución es eliminar el primer argumento:
let credit = 690; if(credit <= 600) { console.log(credit) document.write("VERY POOR"); } else if (credit >= 601 && credit <= 657){ console.log(credit) document.write("POOR"); } else if (credit >= 658 && credit <= 719){ console.log(credit) document.write("FAIR"); } else if (credit >= 720 && credit <= 780){ console.log(credit) document.write("GOOD"); } else { (credit >= 781 && credit <= 850); console.log(credit) document.write("EXCELLENT"); }pd: el código necesita la cláusula 'y' (&&) entre los dos valores para funcionar. Porque, (Verdadero y Falso) = (Falso y Verdadero) = (Falso y Falso) = Falso. ¡Solo es cierto cuando ambos miembros son verdaderos!
Debes reemplazar el || con && .
|| significa O, mientras que && significa Y. Debe verificar si el crédito es mayor que 601 Y menor que 657.
Prueba de esta manera:
credit = 690; if (credit <= 600) { document.write("VERY POOR"); } else if (credit >= 601 && credit <= 657){ document.write("POOR"); } else if (credit >= 658 && credit <= 719){ document.write("FAIR"); } else if (credit >= 720 && credit <= 780){ document.write("GOOD"); } else { (credit >= 781 && credit <= 850); document.write("EXCELLENT"); }en estos casos debe usar el &&
&& El operador definirá que los dos valores deben ser verdaderos, O El operador definirá que para ejecutar, solo un valor es verdadero.
puede leer más aquí: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_AND
let credit = 750; if (credit <= 600) { document.write("VERY POOR"); } else if (credit >= 601 && credit <= 657){ document.write("POOR"); } else if (credit >= 658 && credit <= 719){ document.write("FAIR"); } else if (credit >= 720 && credit <= 780){ document.write("GOOD"); } else { (credit >= 781 && credit <= 850); document.write("EXCELLENT"); }