可以't在if中检查一个变量

Can't check one variable in if

本文关键字:变量 一个 检查 if 可以      更新时间:2024-01-26

我有一个问题。这是代码:

var z = "+"
if (z!="+" || z!="-" || z!="*" || z!="/" || z!="%") document.write("You must give me operator (+ - * / %)");
else
document.write("Yess!");

输出是:您必须给我运算符(+-*/%)

为什么它不能正常工作?感谢您的帮助。:)

您不应该执行OR,而应该执行AND:

var z = "+"
if (z!="+" && z!="-" && z!="*" && z!="/" && z!="%") document.write("You must give me operator (+ - * / %)");
else
    document.write("Yess!");

您最好这样检查。

var z = "+";
document.write('+-*/%'.indexOf(z) !== -1 ? "Yess!" : "You must give me operator (+ - * / %)");

您应该使用"AND"而不是"OR",因为使用"OR"时,您的任何一个条件为true都将使整个条件为true,并且由于z != "-",这足以使您进入if的true分支。

var z = "+";
if (z != "+" && z != "-" && z != "*" && z != "/" && z != "%") {
  document.write("You must give me operator (+ - * / %)");
} else {
  document.write("Yess!");
}

分解逻辑

如果z必须等于"+",而z不能等于"+"||"-"||"*"||"/"||"%,则z必须为true。

这是真的,因为在使用OR时,每个逻辑比较都不以任何其他比较为条件。如果满足任何逻辑比较,例如z不等于"/",则此语句必须为真,因为z="+"且不等于"+"。

*这就是为什么你必须在逻辑语句中使用AND来实现你想要的结果。