Javascript OR运算符不在if语句中工作

时间:2017-06-30 07:35:25

标签: javascript if-statement time operators dayofweek

如果星期几与我的声明中列出的任何日期相匹配,并且将其限制在17:00到19:00之间,那么我试图让这个Javascript做某事,但是OR运算符没有像我预期的那样工作,我是JS的新手,我想知道我是否误解了这个运算符的使用。如果我要列出一周中一天的值,而不是像我的例子中那样列出3,那么代码就像我希望的那样工作。

var d = new Date();
var dayOfWeek = d.getDay(); // 0 = Sunday
var hour = d.getHours();

if ( dayOfWeek == 4 || 5 || 6 && hour >= 17 && hour < 19 ){
    // do stuff
  } else {
    // do other stuff 
} 

6 个答案:

答案 0 :(得分:5)

在这种情况下,您最好使用范围检查,因为您只需要对三个或更多进行两次比较 - 如果有必要,只需要更改一个值,这样就更好了。

if (dayOfWeek >= 4 && dayOfWeek <= 6 && hour >= 17 && hour < 19) {

正确的OR条件需要括号,因为&&超过||

if ((dayOfWeek == 4 || dayOfWeek == 5 || dayOfWeek == 6) && hour >= 17 && hour < 19 ) {

答案 1 :(得分:3)

仅仅为了发布另一种可能性,如果你有动态输入,你可能想要使用array并使用indexOf来检查列表中是否存在这一天:

var d = new Date();
var dayOfWeek = d.getDay(); // 0 = Sunday
var hour = d.getHours();

if ( [4,5,6].indexOf(dayOfWeek) > -1 && hour >= 17 && hour < 19 ){
    // do stuff
  } else {
    // do other stuff 
}

https://jsfiddle.net/hnzzfnot/1/

答案 2 :(得分:2)

var d = new Date();
var dayOfWeek = d.getDay(); // 0 = Sunday
var hour = d.getHours();

if ( (dayOfWeek == 4 || dayOfWeek == 5 || dayOfWeek == 6) && (hour >= 17 && hour < 19) ){
    // do stuff
    console.log("true");
  } else {
    // do other stuff 
    console.log("false");
}

答案 3 :(得分:2)

你需要使用dayOfWeek,但你也可以限制你需要做的检查......

var d = new Date();
var dayOfWeek = d.getDay(); // 0 = Sunday
var hour = d.getHours();

if ( (dayOfWeek >= 4 && dayOfWeek <= 6) && (hour>=17 && hour < 19))
{
  // do stuff
}
else
{
  // doo other stuff
}

答案 4 :(得分:1)

你的if条件应该是:

if ( (dayOfWeek == 4 || dayOfWeek == 5 || dayOfWeek == 6) && hour >= 17 && hour < 19 ){
    // do stuff
  } else {
    // do other stuff 
} 

答案 5 :(得分:1)

像这样纠正,

var d = new Date();
var dayOfWeek = d.getDay(); // 0 = Sunday
var hour = d.getHours();

if ( (dayOfWeek == 4 || 5 || 6) && (hour >= 17 && hour < 19) ){
    console.log("if")
  } else {
    console.log("else")
}