if中的if - else中的多个条件

时间:2015-04-14 07:00:27

标签: javascript if-statement conditional-statements

我试图创建一个只接受一些值的程序。所以,如果" e"变量不是1或2或3,表示数字不正确,但如果该值等于这些数字,则运行else部分。

所有这些听起来都非常简单,易于实现,而且它是,但是我运行了代码和每个vaule我设置为" e"运行if部分。

这是代码:

var e;

e=parseFloat(prompt("Input e",""));

 if(e!=1 || e!=2 || e!=3)
  {
  alert("put again E");
  }

 else
  {
  //whatever
  }

5 个答案:

答案 0 :(得分:8)

在英语中,你说“不是1或2或3”,但是写成!(e == 1 || e == 2 || e == 3);或者,您可以使用逻辑等效的“不是1,而不是2,而不是3”,表示为e != 1 && e != 2 && e != 3

你写的是“不是1或不是2或不是3”。如果值为1,则它不是2(也不是3),因此“不是1或不是2或不是3”仍然是真的。事实上,任何价值都是如此,因为至少有两个(如果不是全部三个)都是真的。

答案 1 :(得分:2)

由于e不能同时具有1,2和3的值,因此您的条件总是会评估为true。你的版本是

  

如果值不同于1或不同于2或不同于3,则执行此操作。

因此,您需要将其更改为更像

的内容
  

如果值不是1或2或3那么

if(!(e == 1 || e == 2 || e == 3)){...}

或者你可以做到

if(e != 1 && e != 2 && e != 3){...}

将会读取

  

如果值不是1且不是2且不是3

这两个选项的结果是相同的。

答案 2 :(得分:2)

这是因为||意思是。或

if(e!=1 || e!=2 || e!=3)

如果你输入e = 1,你将有

if(false OR true OR true)

当然,评估为真。

你想要&&,这意味着,并导致:

if(e!=1 && e!=2 && e!=3)

如果您想维护代码结构。或者您可以接受其他人的建议,并将您的“其他”代码放入“if”块并使用==。

答案 3 :(得分:1)

您应该使用==而不是!=,如:

 if(e==1 || e==2 || e==3)//then re enter value

使用if,表示如果e不是1,2,3,则要求用户重新输入值。

答案 4 :(得分:1)

原因很简单。例如,如果您输入值1,则条件的第一部分返回false,但其他两部分返回true,则条件可以如下所示:

if( false || true || true ) {
 ...
}

因此,无论输入什么,对true值都会有2 false个值。要获得所需内容,请使用&&代替||