我在javascript中设置了一个条件,如果a value
或b value
大于59
,并且c1
、c2
、c3
、c4
中的任何一个大于21
,则我的条件将为真。它工作得很好,但当我输入a value 50
、b value 30
和c1 value 25
时,它将转到else语句。
代码如下:
if((a > 59) || (b > 59) && (c1 > 21) && (c2 > 21) && (c3 > 21) && (c4 > 21)){
total = a + b + c1 + c2 + c3 + c4;
}
else {
}
你们能帮我解决如何满足我的条件吗?
发布于 2018-05-20 12:17:18
根据您的评论
@UnholySheep我将此语句设置为a或b应大于59,c1、c2、c3或c4应大于21,这是正确的语句
这就是你真正要找的东西:
(a > 59 || b > 59) && (c1 > 21 || c2 > 21 || c3 > 21 || c4 > 21)
它是这样工作的:
(a > 59 || b > 59)
检查59(c1 > 21 || c2 > 21 || c3 > 21 || c4 > 21)
或b是否大于59(c1 > 21 || c2 > 21 || c3 > 21 || c4 > 21)
如果其中一个大于21&&
运算符检查两个表达式是否都为真,只有在这种情况下它才返回true
let a=60,b=30,c1=30;
console.log((a > 59 || b > 59) && (c1 > 21 || c2 > 21 || c3 > 21 || c4 > 21));
发布于 2018-05-20 12:33:58
假设你的预期是正确的,那么我会说你的说法与你的预期是错误的。
“我将此语句设置为a或b应大于59 , c1、c2、c3或c4应大于21,这是正确的语句。”
下面陈述中的“和”导致您的期望落空。当a为50,b为30时,第一部分"a或b应大于59“计算为false。
第二部分"c1、c2、c3或c4应大于21“在c1为25时计算为true。
所以,if(...)中的整个条件表达式归结为: false 和 true。这总是会导致错误,这就是为什么你的控制流会进入其他部分。
你需要要么纠正你的陈述,要么纠正你的期望。
https://stackoverflow.com/questions/50434708
复制相似问题