【发布时间】:2013-02-03 18:12:15
【问题描述】:
我对 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 如何处理可变数量的参数。
感谢您的宝贵时间。
【问题讨论】:
-
我认为它会检查参数类型,如果是
function会变成success,否则会变成data,但是我不知道jQuery是如何做到的 -
jquery 函数使用它独特的解析方法,它不仅检查参数,还检查参数计数和类型。
-
为什么不看看源代码? .getJSON()(或 here 获取完整源代码)
-
是的,我的猜测是正确的 =D
标签: javascript jquery optional optional-arguments