JavaScript日期操作,'date'参数传递给函数

时间:2017-06-15 14:26:36

标签: javascript datetime

试图理解为什么你在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

3 个答案:

答案 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源代码中:

Fiddle

这是一个简化的例子:

var callback = function (a, b, c) {
   console.log(a, b, c);
}

callback.apply(null, ['alpha', 'beta', 'gamma']);

答案 2 :(得分:0)

这是一个函数回调,因此它将通过jquery在某处调用,参数将仅在那时可用