2017-06-15 15 views
-1

JS関数内で関数呼び出しで渡されなかったパラメータがある理由、またはスクリプト内のどこにでも宣言されている理由を理解しようとしています。そのパラメータが存在する理由あなたがここにcheckAvailable機能にパラメータ「日付」を見ることができますJavaScriptの日付操作、関数に渡される '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

+2

Fiddle

は、ここで簡単な例です'date'は定義されていないので' TypeError'です。パラメータが 'bind'経由で渡されないことは確かですか? – cubrr

+0

jsfiddleへのリンクが追加されました。あなたはそこで動作し、TypeErrorはコンソールには見えません.... – philar3

答えて

1

です。使用例では、リンクされたパラメータは渡されないように見えるかもしれませんが、実際には関数はその時点で呼び出されません。関数はライブラリに渡されるだけで、後で別の場所から呼び出され、チェックの日付を渡します。関数が実際に呼び出される場合

beforeShowDay.apply((inst.input ? inst.input[ 0 ] : null), [ printDate ]) 

apply方法がある、と[ printDate ]配列の値は、引数として渡されます:あなた自身in the source code of the libraryのためにこれを見ることができます。それはjqueryのことでどこかに呼び出され、パラメータがそのリンクが、それはjQueryのUI日付ピッカーのためのコールバック関数です示し、その後

0

。関数呼び出しは、jQueryのUI日付ピッカーのソースコードで起こる:date`が渡されることはありません `場合は、その関数がスローされます

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

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

1

からのみ利用できるようになりますので、関数コールバックをある

関連する問題