0

我有以下代码:

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

如果日期为空,我的意图是设置日期。我调试了代码。“如果”语句正在工作。如果日期为空,则整个 if 块。但它跳过了开关块。在调试中,range_id = 0;为什么date = "";它会跳过所有开关块?

更新

此代码正在运行。

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

谢谢。

4

4 回答 4

3

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

于 2012-11-15T08:32:44.540 回答
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

工作演示

于 2012-11-15T08:33:48.907 回答
1

看看这条线

if (!date || isEmpty(date)) 
于 2012-11-15T08:28:25.850 回答
0

如果日期为空,您的条件将评估为假。如果日期为空,则if (date)返回。false不知道你错过了什么。你想做:

if (!date || isEmpty(date)) {
于 2012-11-15T08:27:54.370 回答