javascript中布尔值的异常行为

javascript中布尔值的异常行为,javascript,boolean,bitwise-and,Javascript,Boolean,Bitwise And,在使用javascript处理布尔值时,我注意到了一个不确定性: "false" && true //this gives output true false && true //this gives output false 有人能解释一下这种行为吗?因为空字符串以外的字符串是一个真实值,这就是为什么JavaScript中的第一个表达式解析为true出于布尔逻辑目的,非空/未定义/空字符串是true。在第二种情况下,false&&true是logicall

在使用javascript处理布尔值时,我注意到了一个不确定性:

"false" && true  //this gives output true
false && true //this gives output false

有人能解释一下这种行为吗?

因为空字符串以外的字符串是一个真实值,这就是为什么JavaScript中的第一个表达式解析为true

出于布尔逻辑目的,非空/未定义/空字符串是true。在第二种情况下,false&&true是logicall false,因为
“false”
不是布尔值,而是字符串。不管字符串包含什么文本,也不管人类如何直观地解释该文本的含义,它都是一个与其他任何字符串一样的字符串


任何非空字符串都是,当以布尔方式(强制)计算时,它会产生一个
true
值。
&&
运算符短路,逻辑和。这两个条件都必须为
true
,整个表达式才能为
true
,如果任何条件为
false
,则整个操作为
false
,其余条件不进行测试

在第一个示例中,
“false”
不是布尔值
false
,而是字符串
“false”
,它是一个有效的“某物”或值,因此其计算结果为
true

console.log(“false”和&true)//这将给出输出true
“false”
是一个非空字符串,即truth-y。