为什么这个IF语句不返回控制台消息?

时间:2015-01-26 17:27:47

标签: javascript

我不明白为什么这个声明没有通过并打印我的成功信息。

A是真的,B和C都是假的......这里的问题是什么?

var A = true;
var B = false;
var C = false;

if(A && (B && C === false)){

    console.log('success');

}  

5 个答案:

答案 0 :(得分:2)

评估出来:

(true && (false && (false === false))
(true && (false && (true))
(true && (false))
(true && false)
(false)

答案 1 :(得分:1)

因为你将B传递为真。以下应该可以正常工作:

if(A && (B === false && C === false)){

    console.log('success');

}  

但是,你可以使用这样的速记:

if(A && !B && !C){

    console.log('success');

}  

答案 2 :(得分:1)

B && C === false不等同于B === false && C === false,而是相当于B == true && C === false

所以,你的整个陈述相当于: A == true && B == true && C === false

答案 3 :(得分:0)

因为b是假的。

您只是将c与false进行比较

答案 4 :(得分:-1)

正如其他人所指出的那样,B被设置为false,但你正在检查它是否属实。一个很好的选择是:

if(A && !(B && C){
    console.log('success');
}

这说"是真的,是B还是C 是真的?"

如果您想将B设置为true,那么您的if将如下所示:

if (A && B && !C) {
    console.log('success');
}