javascript或操作返回意外结果

时间:2016-06-13 10:07:14

标签: javascript

我是javascript的新手。我有一个类似的程序:

var a = 2

if(a !=2 || a != 3){
  console.log("not")
}

此处,我已将变量a值设置为2

在我的情况下,我设置了if a is not 2 or a is not 3它应该打印not 但此处a's2正在打印not。 无论值是什么,它总是给not

我可以很容易地检查这是python:

if not a == 2 or not a== 3

这里有什么不对吗?

7 个答案:

答案 0 :(得分:2)

var a = 2

a现在是2

a !=2

这是false,因此我们会查看或

的另一面
a != 3

这是事实。因此,测试的两个方面之一是真的。因此,或测试是真的。

如果您想测试某个值是否<2> > 而不是3,那么您需要使用&&运算符。

答案 1 :(得分:1)

也许你想要这个:

if(a !=2 && a != 3){
  console.log("not")
}

换句话说,如果a不是2而a不是3。 这就是布尔逻辑的工作原理。在您的示例中,因为a不等于3,条件为真。

答案 2 :(得分:0)

简单解释

false || true = true

a != 2 //returns false
a != 3 //returns true

在python中:

not a == 2 // returns false
not a == 3 //returns true

答案 3 :(得分:0)

请阅读how logical operators work

如果 a不是2 a不是3 ,则您的条件评估为true,这意味着仅当 a为2时才会为false 3同时这是不可能的 - 这种情况永远都是真的。

您可能也有兴趣阅读mathematical logic and negations上的内容。

如果您想确保 a不是2或3 ,那么您应该将其更改为

if((a != 2) && (a != 3)){

a不是2而a不是3 - 请记住,您正在使用2个语句。

答案 4 :(得分:0)

&#34; OR&#34;在条件中意味着if块中的语句将被执行,如果

中的任何一个方程式
(a != 2) 

(a != 3) 

返回true。

在您的代码段中

(a != 3)

是真的,因此声明

console.log("not");

被执行。

答案 5 :(得分:-1)

这是非常期待的行为,它在python和javascript中的工作方式相同

a = 2
if not a == 2 or not a== 3:
    print ("not")

相当于

var a = 2

if(a !=2 || a != 3){
  console.log("not")
}

答案 6 :(得分:-2)

表达式条件中检查主题之一是否成真或直到没有条件。