来自jQuery源代码的以下代码引起了我的注意(来自最新修订版bit.ly/jqsource的第7716行):
send: function( _, callback ) {
script = document.createElement( "script" );
script.async = "async";
// BLA BLA BLA
}
在任何时候都没有使用命名参数_
。这似乎是强制callback
为arguments[1]
而不是arguments[0]
。为什么这会有用?
答案 0 :(得分:4)
这仅仅是用于引用未使用参数的惯例。
如果他们没有某些参数名称,获取第二个参数的唯一方法就是:
arguments[1];
...这会让我们回到你之前关于JSLint抱怨对arguments
对象的个别成员的静态引用的问题。
答案 1 :(得分:0)
查看来源,根据jQuery.support.ajax
的结果,jQuery.ajaxTransport
会被分配两个函数中的一个。
你看到的第一个有这个签名:
send: function( _, callback )
这意味着不使用第一个参数。
另一方面,第二个(在源上搜索send:
)有这个签名:
send: function( headers, complete )
为了维护send方法的通用接口,第一个接口必须接受参数,即使它们没有被使用。
BTW,第一个似乎没有使用headers
,因为它使用<script/>
元素模拟请求。