参数占位符

时间:2011-08-24 00:47:25

标签: jquery

来自jQuery源代码的以下代码引起了我的注意(来自最新修订版bit.ly/jqsource的第7716行):

        send: function( _, callback ) {

            script = document.createElement( "script" );

            script.async = "async";

// BLA BLA BLA
        }

在任何时候都没有使用命名参数_。这似乎是强制callbackarguments[1]而不是arguments[0]。为什么这会有用?

2 个答案:

答案 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/>元素模拟请求。