defaultDateを今日から25年前の日付に設定するこのコードが正しく機能する理由について私は本当に興味があります...
$('div.recipient_modal input[name="birth_date"]:first').datepicker({
changeMonth: true,
changeYear: true,
defaultDate: get_recipient_default_birth_date(),
yearRange: 'c-125:' + new Date().getFullYear()
});
function get_recipient_default_birth_date()
{
var d = new Date();
var y = d.getFullYear() - 25;
d.setFullYear(y);
return $.datepicker.formatDate('mm/dd/yy', d);
}
しかし、以下のような同じコードを持つ名前付き関数を呼び出すのではなく、匿名関数を使用して今日から25年前にデフォルトの日付を設定しようとすると...
$('div.recipient_modal input[name="birth_date"]:first').datepicker({
changeMonth: true,
changeYear: true,
defaultDate: function() {
var d = new Date();
var y = d.getFullYear() - 25;
d.setFullYear(y);
return $.datepicker.formatDate('mm/dd/yy', d);
},
yearRange: 'c-125:' + new Date().getFullYear(),
});
コンソールで次のエラーが発生します...
Uncaught TypeError: Object function () {
var d = new Date();
var y = d.getFullYear() - 25;
d.setFullYear(y);
return $.datepicker.formatDate('mm/dd/yy', d);
} has no method 'getTime'
これら2つの割り当ての違いと、無名関数が機能しないのに名前付き関数が機能する理由を誰かが説明できますか?
ありがとうございました。