Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么';这个IF语句是否返回控制台消息?_Javascript - Fatal编程技术网

Javascript 为什么';这个IF语句是否返回控制台消息?

Javascript 为什么';这个IF语句是否返回控制台消息?,javascript,Javascript,我不明白为什么这个声明没有通过并打印我的成功消息 A是真的,B和C是假的。。。这里有什么问题 var A = true; var B = false; var C = false; if(A && (B && C === false)){ console.log('success'); } 因为你通过的B是真的。以下几点应该很好: if(A && (B === false && C === false)){

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

A是真的,B和C是假的。。。这里有什么问题

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

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

    console.log('success');

}  

因为你通过的B是真的。以下几点应该很好:

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

    console.log('success');

}  

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

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

    console.log('success');

}  
对其进行评估:

(true && (false && (false === false))
(true && (false && (true))
(true && (false))
(true && false)
(false)
因为b是假的


您仅将c与false进行比较
B&&c==false
不等同于
B==false&&c==false
,而是等同于
B==true&&c==false

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

正如其他人指出的,B被设置为false,但您正在检查它是否为true。一个好的选择是:

if(A && !(B && C){
    console.log('success');
}
这表示“A是真的,B或C不是真的吗?”

如果要将B设置为true,则If将如下所示:

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

如果(A&&!B&&!C){在语法上无效,则应该是
=
用于赋值,而不是
=
@MattBall对不起,更正了。你的意思是“因为你将B传递为false吗?”