我的运营商出了什么问题? Javascript

What is wrong with my operators? Javascript

我不知道为什么它不起作用。假设当你的分数在 90 或更高之间等于 A。当你在 80 和 89 之间等于 B 等等...

let nota = prompt("Ingrese su nota: ");


if (nota >= 90){
  console.log(nota + " " + "equivale a una A");
}

else if (nota == 80  ||  nota <= 89){
  console.log(nota + " " + "equivale a una B");
}
else if (nota == 70  ||  nota <= 79){
  console.log(nota + " " + "equivale a una C");
}
else if (nota == 60  ||  nota <= 69){
  console.log(nota + " " + "equivale a una D");
}
else{
  console.log("Tienes una F");

}

将表达式替换为 nota >= 80 && nota <= 89

你的问题是在第二次测试中:

nota == 80  ||  nota <= 89

每个 89 或更小的值都会通过,因此他们都会得到 B。另请注意,测试 nota == 80 是多余的,因为 80 也 <= 89,因此测试等同于:

nota <= 89

当然可以:

nota >= 80  &&  nota <= 89

但这比需要的要复杂得多。您可以简化测试,因为 if else 意味着一旦一个测试为真它将停止测试,因此只需使用 >= 和所有测试的较低值:

let nota = prompt("Ingrese su nota: ");

if (nota >= 90){
  console.log(nota + " " + "equivale a una A");
  
} else if (nota >= 80) {
  console.log(nota + " " + "equivale a una B");

} else if (nota >= 70) {
  console.log(nota + " " + "equivale a una C");

} else if (nota >= 60) {
  console.log(nota + " " + "equivale a una D");

} else {
  console.log("Tienes una F");
}

测试必须按正确的顺序进行,因此如果值为 90 或更大,则第一个测试已满足,不再测试其他测试。如果值为 82,则第一个测试失败,因此进入下一个测试,下一个测试通过,因此结果为 B,并且不再尝试进一步的测试。

对于其他值依此类推,所以如果值为 55,则所有测试都会失败并进入最终 else.

使用此代码

 let nota = prompt("Ingrese su nota: ");
if (nota >= 90){
  console.log(nota + " " + "equivale a una A");
 
}

else if (nota <= 89 && nota >= 80 ){
  console.log(nota + " " + "equivale a una B");

}
else if (nota <= 79 && nota >= 70){
  console.log(nota + " " + "equivale a una C");
  
}
else if (nota <= 69 && nota >= 60){
  console.log(nota + " " + "equivale a una D");

}
else{
  console.log("Tienes una F");

}