IF语句中的多个或多个条件
我想我在这里缺少一些基本的东西。为什么第三个IF条件是真的?该条件不应该评估为假?我想做一些事情,其中编号不是1,2或3.IF语句中的多个或多个条件
var id = 1;
if(id == 1) //true
if(id != 1) //false
if(id != 1 || id != 2 || id != 3) //this returns true. why?
谢谢。
因为如果任何一个条件为真,OR运算符将返回true,并且在您的代码中有两个条件为真。
每三个条件独立地评估[1]:
id != 1 // false
id != 2 // true
id != 3 // true
然后,它计算false || true || true
,这是真实的(a || b
为真,如果任一a
或b
为true)。我想你想
id != 1 && id != 2 && id != 3
如果ID不为1,这不是2这是唯一真正的,它不是3
[1]:这并不完全正确,查找short-circuit evaluation。实际上,只评估前两个条款,因为这是确定表达式的真值所必需的。
当检查ID!= 2,则返回true,并停止进一步的检查
这一点很重要,如果您在检查参数之前需要查看某个对象是否存在,它就派上用场了。 'if(obj!= null && obj.field == 2)' – 2012-02-03 17:18:25
-1 - 一个有趣的方面,但不是根本问题。对于底部构建,使用 – user66001 2014-03-26 14:37:45
要执行的代码,其中的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]))
因为'id'不等于'2'或'3'? 'false ||真|| true == true' – 2012-02-03 17:11:40
1!= 2 ..这显然是正确的.. lollzzz – 2012-02-03 17:12:48
因为id> 3,imo。 – ddacot 2012-02-03 17:13:50