我对jQuery文档有点困惑。我在看this page describing $.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请求成功返回时调用的方法。
那么为什么示例代码有效呢?它似乎跳过了第二个论点。我原以为正确的代码是:
$.getJSON('ajax/test.json', {}, function(data) {
// and then the same from here
我知道方括号表示[, data]
和[, success]
参数是可选的,但我想我不明白javascript如何处理可变数量的参数。
感谢您的时间。
答案 0 :(得分:1)
在jQuery源代码中:
// shift arguments if data argument was omitted
if ( jQuery.isFunction( data ) ) {
type = type || callback;
callback = data;
data = undefined;
}
所以它有效
答案 1 :(得分: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