Javascript if语句和&&使用两次相同的变量

时间:2016-10-19 06:32:36

标签: javascript

在以下代码中,查看时间是否低于上午8:30。它工作正常(在时间凌晨2:26测试):

function workingSchedule() {
    var h = new Date().getHours();
    var m = new Date().getMinutes();
    if (h < 8 && m < 30) {
        window.alert("Sorry, we're not working at these hours.");
    }
}

但是,如果我希望代码检查1)它是否早于上午8:30; 2)它比中午12点晚,它不会工作。

function workingSchedule() {
    var h = new Date().getHours();
    var m = new Date().getMinutes();
    if ((h < 8 && m < 30) && h > 12) {
        window.alert("Sorry, we're not working at these hours.");
    }
}

基本上,我的工作时间表从上午8:30到下午12:00,下午2:00到下午5:00。我想显示提醒窗口文字&#34; 抱歉,我们这些时间没有工作&#34;每当机器(电脑,笔记本电脑,手机)的时间在这些时间之间时。

&&运算符或if语句或两者都有问题吗?

2 个答案:

答案 0 :(得分:2)

您想在中午之后检查是否是8:30 ,而不是中午之后。那是||,而不是&&

  

基本上,我的工作时间表从上午8:30到下午12:00,下午2:00到下午5:00。

您当前的代码会检查是否在晚上1点之后。 (“大于12小时”),不是在中午之后。它也不处理2-5班次。

所以,请参阅评论:

if (h < 8 ||                  // It's before 8 a.m.
    (h === 8 && m < 30) ||    // It's 8:00-8:29 a.m.
    (h >= 12 && h < 14) ||    // It's 12:00-1:59 p.m.
    h >= 17                   // It's 5 p.m. or later
   ) {

答案 1 :(得分:0)

您同时询问了h < 8 h > 12。显然,这绝不是真的。

您很可能打算使用或代替:

(h < 8 && m < 30) || h > 12

查看javascript&#39; list of logical operators,但知道

  

expr1 || expr2如果可以转换为true,则返回expr1;否则,返回expr2。因此,当与布尔值一起使用时, ||如果任一操作数为真,则返回true。