如何解决Javascript AND OR运算符和括号
在if和or语句中正确触发代码时出现问题。我希望语句中的代码在defholdid var等于“ cb_SR”并且如果以下任何变量为true时运行:altRighttargets,inRightTargets,safetyRightTargets。我已经检查了每个变量,它们都收到了我期望的值。这是声明:
if (defholdid === "cb_SR" && (altRightTargets === true || inRightTargets === true || safetyRightTargets === true)) {
//code I want to trigger
};
我检查了每个单独的表达式的语句,并且可以触发代码,所以我认为我在错误地编写了语句。
谢谢
解决方法
请确保您要与true
比较的变量实际包含布尔值,而不是字符串"true"
或"false"
。如果它们包含这些字符串,则与true
的比较将始终为false。在您进行OR分组的情况下,该变量将被有效忽略。
严格相等运算符===
对于不同类型的值将始终为false。但是,即使更改为宽松的相等运算符==
,true == "true"
也会为假。当将布尔值与另一种类型进行比较时,布尔值将首先转换为0
或1
,然后将其与其他值进行比较(可能会进行其他类型的变戏法)。因此true == "1"
是正确的,因为1 == "1"
,而true == "true"
是错误的,因为1 == "true"
是错误的。正如this answer中指出的,我们有以下几种将布尔值与字符串进行比较的情况:
true == "true"; //false
true == "1"; //true
false == "false"; //false
false == ""; //true
false == "0"; //true
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。