我自己是IF状态,
tempNum2 = 4, tempNum2 = 3
answer1 = 1, answer2 = 3, answer3 = 2, answer4 = 4
if( (tempNum2== answer2 || tempNum1== answer2) &&
(tempNum2!= answer1 || tempNum1!= answer1) &&
(tempNum2!= answer4 || tempNum1!= answer4) &&
(tempNum2!= answer3 || tempNum1!= answer3) &&
(asnwer5 == 0))
{
console.log("Correct");
}
现在查看if语句,tempNum2等于answer4,但在我的firefox控制台中,它打印出Correct,查看if语句,它应该失败。因为tempNum2是4,而answer4 = 4,所以这个if语句应该失败,这个语句出了什么问题?不要担心别的什么,我敢肯定我有这个if语句错了。
帆布
答案 0 :(得分:2)
你必须拥有所有4个或子句中的一个,因为你正在使用a和无处不在。另外我不知道答案5是什么,所以我不能说,但它也应该是真的,但它是定义的。如果您将&&
更改为||,
它可能会有效,但我不知道您尝试使用的是什么逻辑。
(false || false)&&
(true || true)&&
(true || false)&&
(true|| true)
false && true && true && true
我不知道你想要什么逻辑,但是你的代码完全按照你所说的去做。事实上:
(tempNum2== answer2 || tempNum1== answer2)
因此,除非tempNum2= tempNum1= answer2
,否则此逻辑将始终返回false。
答案 1 :(得分:1)
tempnum2!= answer4 || tempNum1!=answer4
总是如此,因为1.)tempnum2是3(第一行)和2.)tempNum1未定义。确保你的第一行是正确的;)。
/ E:您的代码中存在严重的拼写错误。你应该纠正它们。
(asnwer5 == 0)
。你的意思是(answer5 == 0)
?答案 2 :(得分:0)
2º条件如果tempNum2为4且answer4 = 4
(tempNum2!= answer4 || tempNum1!= answer4)
此返回 true ,因为tempNum1!= answer4
(3!= 4)。
让我们分析一下条件:
1º条件:
(tempNum2== answer2 || tempNum1== answer2)
返回 true ,因为tempNum1== answer2
为真(3 == 3)
3º条件:
(tempNum2!= answer4 || tempNum1!= answer4)
返回true
,因为tempNum1!= answer4为真(3!= 4)
4º条件:
(tempNum2!= answer3 || tempNum1!= answer3)
返回 true 因为(tempNum2!= answer3)为真(4!= 2)。
如果asnwer5 = 0
这个(asnwer5 == 0)将是真的,就像其他条件一样。
我认为你犯了一个错误,tempNum2 = 4, tempNum2 = 3
你的意思是tempNum2 = 4, tempNum1 = 3
。因为根据您的文字tempNum2 is equal to answer4
。
答案 3 :(得分:0)
我猜你想在第一行写 tempNum1 = 4 ..
tempNum1 = 4,tempNum2 = 3
所以代码:
tempNum1 = 4, tempNum2 = 3
answer1 = 1, answer2 = 3, answer3 = 2, answer4 = 4
if( (tempNum2== answer2 || tempNum1== answer2) &&
(tempNum2!= answer1 || tempNum1!= answer1) &&
(tempNum2!= answer4 || tempNum1!= answer4) &&
(tempNum2!= answer3 || tempNum1!= answer3) &&
(asnwer5 == 0))
{
console.log("Correct");
}
答案 4 :(得分:0)
(tempNum2!= answer4 || tempNum1!= answer4) &&
这仍然是真实的,因为大概是tempNum1未定义 - 因此不等于回答4.
记住逻辑运算符之间的差异!如果只满足一个条件,或将返回true;在你的例子中,如果没有定义某些变量,总是会满意 - 无论如何都要考虑到不平等测试。
使用像这样的if()语句的整体结构还有很多不足之处。它比任何东西都更能影响可读性。 我会认真考虑重构您的代码。保持这样不会很有趣,也不会调试很少的错误 - 就像你刚刚经历的那样。