せかいや

いまいるここを、おもしろく http://sekai-in-the-box.appspot.com/

【JavaScript 】【jQuery】引数省略の方法

 
■topic summary
jQuery's method (ex:$.getJSON) can be called ,
$.getJSON( url, data, callback )
or
$.getJSON( url, callback )

I wandered and understand why can I write with these two kinds.


 

jQueryの引数の省略、

なんとなくリファレンスを眺めていて↓

test.jsからJSON形式のデータを読み込み、そのデータの中のnameにアクセスする
$.getJSON("test.js", function(json){
・・・
幾つかのデータを渡しながら、test.jsからJSON形式のデータを読み込み、そのデータの中のnameにアクセスする
$.getJSON("test.js", { name: "John", time: "2pm" }, function(json){

http://semooh.jp/jquery/api/ajax/jQuery.getJSON/+url,+data,+callback+/

考えたらこれ、どうなっているんだろう。
2つ目の引数としてdataを期待しているけれど、
functionを2つ目の引数に書くこともできる。
 
引数の型で判断しているのかな?
確かめてみよう。


 

GitHubのコード、

難読化前のコードを見てみると・・・

get: function( url, data, callback, type ) {
  // shift arguments if data argument was omitted
  if ( jQuery.isFunction( data ) ) {
   type = type || callback;
   callback = data;
   data = null;
}

https://github.com/jquery/jquery/blob/master/speed/jquery-basis.js

なるほどね。
「shift arguments」だって。
jQuery.isFunctionで第2引数を判定している。
こういう定義方法があるのか。
 

jQuery.isFunction

っていう関数も初めて知った。
jQueryってUI操作にしか使っていなかったけど、こういう便利関数もあるんだ。