if if根据几个条件切换javascript

时间:2017-01-22 09:39:11

标签: javascript

我有3个变量,我正在进行测试,我是javascript的新手,我正在努力将if / else语句转换为交换机以获得更好的代码。但是我需要一些关于如何这样做的指导,因为我有3天,每月,每年。任何帮助将非常感激。 if((day!=''|| month!=''|| year!='')){

    if(day!='' && month =='' && year ==''){
        var day = d.setDate(d.getDate()+ parseInt(day));
    }else if(day!='' && month!='' && year ==''){
        var month =d.setDate(d.getMonth()+1+ parseInt(month));
        var day = d.setDate(d.getDate()+ parseInt(day));
    }else if(day!='' && month!='' && year!=''){
        var year =d.setDate(d.getFullYear()+ parseInt(year));
        var month =d.setDate(d.getMonth()+1+ parseInt(month));
        var day = d.setDate(d.getDate()+ parseInt(day));
    }else if(day!='' && year!='' && month ==''){
        var year =d.setDate(d.getFullYear()+ parseInt(year));
        var day = d.setDate(d.getDate()+ parseInt(day));
    }else if(month!='' && year!='' && day ==''){
        var year =d.setDate(d.getFullYear()+ parseInt(year));
        var month =d.setDate(d.getMonth()+1+ parseInt(month));
    }else if(month!='' && day =='' && year ==''){
        var month =d.setDate(d.getMonth()+1+ parseInt(month));
    }else if(year!='' && day =='' && month ==''){
        var year =d.setDate(d.getFullYear()+ parseInt(year));
    }

}

2 个答案:

答案 0 :(得分:0)

欢迎!你想要实现什么目标?目前,你的逻辑被打破了。例如,如果“day”不为空,则第一个“if”子句将触发,但测试“day”的其他子句都不为空...

答案 1 :(得分:0)

一些问题和评论:

  • 您应该单独处理修改,因为您无需测试每个组合。年,月和日调整的影响可以独立应用。

  • 您正在调用错误的方法来调整月份和/或年份

  • 这些方法返回时间戳,因此您不应将结果分配给年,月或日变量。调用将突变d变量,这显然是您所需要的。

  • 可以使用统一+

  • 转换为整数
  • 虽然月份编号基于零,但是当day变量应该添加多个月时,添加1个额外值是没有意义的。请放弃+ 1

所以你可以简化如下:

if (year !== '') d.setFullYear(d.getFullYear() + +year);
if (month !== '') d.setMonth(d.getMonth() + +month);
if (day !== '') d.setDate(d.getDate() + +day);