Javascript 在IF语句中使用and运算符时出现问题
我相信问题源于&&运算符,因为当我将其切换到| |时会得到一个结果。如果我保留它&&结果不会返回 我的代码如下Javascript 在IF语句中使用and运算符时出现问题,javascript,Javascript,我相信问题源于&&运算符,因为当我将其切换到| |时会得到一个结果。如果我保留它&&结果不会返回 我的代码如下 <!DOCTYPE html> <html> <body> <p id="greeting"></p></center> <script> var time = new Date().getHours(); let phrase = ""; if ((time > 6) &&
<!DOCTYPE html>
<html>
<body>
<p id="greeting"></p></center>
<script>
var time = new Date().getHours();
let phrase = "";
if ((time > 6) && (time < 12)) {
phrase = "Good Morning";
} else if ((time > 12) && (time < 18)) {
phrase = "Good Afternoon";
} else if ((time >= 18) && (time <= 6)) {
phrase = "Good Evening";
}
document.getElementById("greeting").innerHTML = phrase;
</script>
</body>
</html>
var time=新日期().getHours();
让短语=”;
如果((时间>6)和&(时间<12)){
短语“早上好”;
}否则,如果((时间>12)和(&(时间<18)){
短语“下午好”;
}else if((time>=18)&(time您的最终if
语句将永远不会计算为真;时间不能大于(或等于)18
,同时它小于(或等于)6
。您正在寻找或语句(|
)这里,由于时间总是在下午6点之后(>18
)或早上6点之前(<6
),因此不能同时是:
else if ((time >= 18) || (time <= 6))
个人技术熟练程度1
仿真器
您的最终if
语句将永远不会计算为true
;时间不能大于(或等于)18
,同时它小于(或等于)6
。您正在寻找或语句(|
)这里,由于时间总是在下午6点之后(>18
)或早上6点之前(<6
),因此不能同时是:
else if ((time >= 18) || (time <= 6))
个人技术熟练程度1
仿真器
为什么&&
是罪魁祸首?很明显,这是你的条件…怎么可能大于18但小于6?这是不可能的。是的,我肯定忽略了这一点,我在以一种奇怪的方式思考它。谢谢你的帮助。为什么&&
是罪魁祸首?很明显,这是你的条件…怎么可能比你的条件更大呢18但少于6?这是不可能的。是的,我肯定忽略了这一点,我在以一种奇怪的方式思考它。谢谢你的帮助。应该删除最后一个else if
语句,并将其转换为else
,考虑到最后的if
条件语句,如果实际检查剩余小时,则没有意义所有可能的情况,这是一个很好的观点。我刚刚更新了我的答案来提到这一点。我感谢你的帮助,谢谢。所以我的目标是找到6-12,12-6点,6点到6点的时间窗口。有没有更好的方法来做到这一点?我试着查找一个具有范围的中间操作符,但无法真正找到。我知道如何在Pyth中找到它在但不是JS上。没问题!如果您希望在每种情况下应用相同的逻辑,您可以使用,但考虑到您希望对三种状态中的每一种应用不同的逻辑,三个独立的if
条件可能是您的最佳选择。您应该删除最后一个else if
语句并将其转换为else
,如果havi检查剩余时间实际上,考虑到最后的如果条件现在涵盖了所有可能的场景,这是一个很好的观点。我刚刚更新了我的答案提到这一点。我感谢你的帮助,谢谢。所以我的目标是找到时间窗口6-12,12-6pm,6pm到6am。有没有更好的方法来做到这一点?我试着寻找你p a between运算符具有一个范围,但无法真正找到。我知道在Python中如何处理它,而不是在JS中。没有问题!如果您希望在每种情况下应用相同的逻辑,您可以使用,但考虑到您希望对三种状态中的每种应用不同的逻辑,三个独立的if
条件可能是您最好的选择。