0

jQueryのドキュメントに少し混乱しています。私はこのページを見て説明$.getJSONしています。コードサンプルは次のとおりです。

$.getJSON('ajax/test.json', function(data) {
  var items = [];

  $.each(data, function(key, val) {
    items.push('<li id="' + key + '">' + val + '</li>');
  });

  $('<ul/>', {
    'class': 'my-new-list',
    html: items.join('')
  }).appendTo('body');
});

ただし、メソッドのシグネチャはですjQuery.getJSON( url [, data ] [, success(data, textStatus, jqXHR) ] )。ここdataで、はサーバーに送信されるオブジェクトでありsuccess、JSONリクエストが正常に返されたときに呼び出されるメソッドです。

では、なぜサンプルコードが機能するのでしょうか。2番目の引数をスキップしたようです。私は正しいコードが次のようになることを期待していました:

$.getJSON('ajax/test.json', {}, function(data) {
// and then the same from here

角かっこは引数[, data][, success]引数がオプションであることを意味しますが、JavaScriptが可変数の引数をどのように処理するかを理解していないと思います。

お時間をいただきありがとうございます。

4

2 に答える 2

1

jQueryソースコード内:

// shift arguments if data argument was omitted
        if ( jQuery.isFunction( data ) ) {
            type = type || callback;
            callback = data;
            data = undefined;
        }

だからそれは動作します

于 2013-02-19T06:30:38.500 に答える
0

引数の数:

arguments.length

次に、引数のタイプをチェックし、指定した引数を判別します。

例えば:

if(typeof arguments[0] === 'string') // first parameter is a string so it must be url
if(typeof arguments[1] === 'object') // second parameter is an object so it must be data passed to server
if(typeof arguments[2] === 'function') // third parameter is a function so it must be callback
于 2013-02-19T06:29:20.973 に答える