试图理解为什么你在JS函数中有一个参数,该函数没有在函数调用中传入,或者先前在脚本中的任何地方声明过。
您可以在checkAvailable
函数中看到参数'date'...
var dateToday = new Date();
$('#visit').datepicker({
beforeShowDay: checkAvailable,
minDate: dateToday
});
var unavailableDates = ["19-10-2012","1-2-2013","15-10-2012"];
function checkAvailable(date) {
dmy = date.getDate() + "-" + (date.getMonth() + 1) + "-" + date.getFullYear();
if ($.inArray(dmy, unavailableDates) != -1) {
return [false, "", "unAvailable"];
} else {
var day = date.getDay();
return [(day != 0 && day != 6)];
}
}
有人可以解释为什么该参数存在吗?
谢谢!
以下是所有代码on jsfiddle
答案 0 :(得分:1)
调用该参数时将传入该参数。在您链接的示例用法中,它可能看起来没有传入任何参数,但实际上该函数在此时未被调用。该函数仅传递到库中,然后将从其他位置调用它,并传递日期以进行检查。您可以自己查看in the source code of the library:
beforeShowDay.apply( ( inst.input ? inst.input[ 0 ] : null ), [ printDate ] )
apply
方法是实际调用函数的地方,[ printDate ]
数组中的值作为参数传入。
答案 1 :(得分:1)
该链接显示它是jQuery UI Datepicker的回调函数。函数调用发生在jQuery UI Datepicker源代码中:
这是一个简化的例子:
var callback = function (a, b, c) {
console.log(a, b, c);
}
callback.apply(null, ['alpha', 'beta', 'gamma']);
答案 2 :(得分:0)
这是一个函数回调,因此它将通过jquery在某处调用,参数将仅在那时可用