我有以下代码:
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
感谢。
答案 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
答案 2 :(得分:1)
查看此行
if (!date || isEmpty(date))
答案 3 :(得分:0)
如果date为null,您的条件将评估为false。如果date为null,则if (date)
返回false
。不确定你错过了什么。你想做的事:
if (!date || isEmpty(date)) {