我有一个递归的JavaScript函数问题未定义的递归函数 - 返回值是不确定的:的Javascript回用日期()
function get_next_weekday(timesec) {
var nextdaytogo = timesec;
var nextday;
var hour = timesec.getHours();
initstunden = 13 - hour;
initminuten = 59 - timesec.getMinutes();
var holidays = [
new Date(2016, 11, 25).toDateString(), new Date(2016, 11, 26).toDateString(), new Date(2017, 00, 01).toDateString(), new Date(2017, 00, 06).toDateString(),
new Date(2017, 03, 14).toDateString(), new Date(2017, 03, 17).toDateString(), new Date(2017, 04, 01).toDateString(), new Date(2017, 04, 25).toDateString(),
new Date(2017, 05, 05).toDateString(), new Date(2017, 05, 15).toDateString(), new Date(2017, 09, 03).toDateString(), new Date(2017, 10, 01).toDateString(),
new Date(2017, 11, 25).toDateString(), new Date(2017, 11, 26).toDateString(), new Date(2018, 00, 01).toDateString(), new Date(2018, 00, 06).toDateString(),
new Date(2018, 02, 30).toDateString(), new Date(2018, 03, 02).toDateString(), new Date(2018, 04, 01).toDateString(), new Date(2018, 04, 10).toDateString(),
new Date(2018, 04, 21).toDateString(), new Date(2018, 04, 31).toDateString(), new Date(2018, 09, 03).toDateString(), new Date(2018, 10, 01).toDateString(),
new Date(2018, 11, 25).toDateString(), new Date(2018, 11, 26).toDateString()
];
if ($.inArray(timesec.toDateString(), holidays) > -1 || timesec.getDay() == 0 || timesec.getDay() == 6) {
console.log("if() Statement")
//Holiday
if ($.inArray(timesec.toDateString(), holidays) > -1){
console.log("Holiday Func." + timesec);
var nextday = new Date(timesec.getTime() + 24 * 60 * 60 * 1000);
var next = get_next_weekday(nextday);
}
//Sunday
else if (timesec.getDay() == 0){
console.log("Sunday Func." + timesec);
var nextday = new Date(timesec.getTime() + 24 * 60 * 60 * 1000);
var next = get_next_weekday(nextday);
}
//Saturday
else if (timesec.getDay() == 6){
console.log("Saturday Func." + timesec);
var nextday = new Date(timesec.getTime() + 24 * 60 * 60 * 1000);
var next = get_next_weekday(nextday);
}
else console.log("Und. Func.");
}
else{
console.log("else Statement - Value: " + next);
return timesec;
}
}
var daydeliver = get_next_weekday(aktuell);
console.log("Func. - Return: " + daydeliver);
这是日志:
- 如果( )声明SaturdayFunc.Sat Dec 23 2017 11:11:53 GMT + 0100 if() Statement Sunday Func.Sun Dec 24 2017 11:11:53 GMT + 0100 if() Statement Holiday Func.Mon Dec 25 2017 11: 11:53 GMT + 0100 if() Statement Holiday Func.Tue Dec 26 2017 11:11:53 GMT + 0100 else 语句 - 值:undefined Func。 - Return:undefined
有人可以帮我解决这个问题吗?
你'next'是不确定的,因为你设置功能下一个变(局部范围)。每次你的函数返回递归(在这种情况下假期)它设置本地'下一个'变量。然后finaly(得到正确的日期),这是没有'下一个'变量定义 - undefined - ...对不起嘴巴 – RizkiDPrast