javascript中布尔值的异常行为
在使用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
"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。