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

日付がnullの場合の私の意図は、日付を設定します。コードをデバッグしました。「if」ステートメントが機能しています。日付が null の場合は、if ブロック全体です。ただし、switch ブロックはスキップします。デバッグで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 は整数値を返します。ただし、このメソッドで実行するには、日付がオブジェクトである必要があります。日付が NULL であり、メソッドを呼び出すことができないため、コードが切り替えられてエラーまたは例外が生成されると思います。

于 2012-11-15T08:32:44.540 に答える
2

関数では、日付がnullかどうかをチェックしていますが、場合によっては、未定義の変数から日付を取得しようとしています。

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

日付が null の場合、条件は false と評価されます。日付が null の場合if (date)に返します。false何が欠けているのかわからない。あなたがしたい:

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