IF语句中的javascript多个OR条件

时间:2012-02-03 17:10:29

标签: javascript

我想我错过了一些基本的东西。为什么第三个IF条件是真的?条件不应该评估为假吗?我想做一些id不是1,2或3的事情。

var id = 1;
if(id == 1) //true    
if(id != 1) //false 
if(id != 1 || id != 2 || id != 3) //this returns true. why?

谢谢。

6 个答案:

答案 0 :(得分:30)

使用OR(||)操作,如果任何一个条件为真,则结果为真。

我认为你想在这里进行AND(和&&)操作。

答案 1 :(得分:24)

您希望执行id不是(1或2或3)的代码,但OR运算符不会通过id分发。说出你想要的唯一方法就是说

  

id不是1,id不是2,id不是3。

转换为

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

或者更多pythonesque:

if (!(id in [,1,2,3]))

答案 2 :(得分:3)

三个条件中的每一个都是独立评估的[1]:

id != 1 // false
id != 2 // true
id != 3 // true

然后评估false || true || true,这是真的(如果a || ba为真,则b为真)。我想你想要

id != 1 && id != 2 && id != 3

只有当ID不是1并且它不是2且它不是3时才是真的。

[1]:这不是严格正确的,查找short-circuit evaluation。实际上,只评估前两个子句,因为这是确定表达式真值所必需的。

答案 3 :(得分:1)

因为如果任何一个条件为真,OR运算符将返回true,并且在代码中有两个条件为真。

答案 4 :(得分:1)

当它检查id!= 2时,它返回true并停止进一步检查

答案 5 :(得分:-1)

这是一个示例:

false && true || true   // returns true
false && (true || true) // returns false
(true || true || true)  // returns true
false || true           // returns true
true || false           // returns true