Javascript切换案例?

时间:2012-11-15 08:23:16

标签: javascript switch-statement

我有以下代码:

function SetStartDateIfNull(date, range_id) {
if (date || isEmpty(date)) {
    switch (range_id) {
        case 0:
            date = date.getDate() - 1;
            break;
        case 1:
            date = date.getDate() - 30;
            break;
        case 2:
            date = date.getMonth() - 6;
            break;
        case 3:
            date = date.getYear() - 1;
            break;
        case 4:
            date = date.getYear() - 15;
            break;
    } //end switch
} //end if
return date;
} //end SetStartDateIfNull

我的意图是如果date为null,我设置日期。我调试了代码。 “if”声明正在发挥作用。如果date为null,则整个if块。但它会跳过开关块。在调试中,range_id = 0;date = "";为什么它会跳过所有交换机块?

更新

此代码正常运作。

function SetEndDateIfNull(date) {
    if (date || isEmpty(date)) {
        date = new Date();
    }
    return date;
} //end SetDateIfNull

感谢。

4 个答案:

答案 0 :(得分:3)

非常奇怪的代码。 方法getDate,getMonth和getYear返回整数值; 但是对于使用此方法运行,date必须是object。 我认为你的代码进入switch然后生成错误或异常,因为date为NULL并且不能调用任何方法。

答案 1 :(得分:2)

在您的函数中,您正在检查日期是否为空,但在您的情况下,您正在尝试从未定义的变量中获取日期。

function SetStartDateIfNull(date, range_id) {
    if (!date || isEmpty(date)) {
        var date = new Date();//date is undefined
        switch (range_id) {
            case 0:
                date = date.getDate() - 1;
                break;
            case 1:
                date = date.getDate() - 30;
                break;
            case 2:
                date = date.getMonth() - 6;
                break;
            case 3:
                date = date.getYear() - 1;
                break;
            case 4:
                date = date.getYear() - 15;
                break;
        } //end switch 
      } //end if
    return date;
    } //end SetStartDateIfNull

Working Demo

答案 2 :(得分:1)

查看此行

if (!date || isEmpty(date)) 

答案 3 :(得分:0)

如果date为null,您的条件将评估为false。如果date为null,则if (date)返回false。不确定你错过了什么。你想做的事:

if (!date || isEmpty(date)) {