在JavaScript函数中使用忽略参数的目的/好处是什么?

这样就没有误解,这个问题不是关于在JS函数中允许可选参数。

我的问题是由jQuery parseXML函数parseXML ,它在jQuery.js定义如下:

 // Cross-browser xml parsing // (xml & tmp used internally) parseXML: function( data, xml, tmp ) { ... } 

在函数体内,参数xmltmp都是在使用之前分配的。 这意味着它们被用作局部变量,因此函数可以像这样定义:

 parseXML: function(data) { var xml, tmp; ... } 

除了在jQuery.js的缩小版本中保存几个字符外,第一种方式的好处是什么?

如果我们定义两个函数……

 function a ( foo ) { } function b ( foo, bar, baz ) {} 

……他们会报告不同的length ……

 console.log( [a.length, b.length] ); // logs [1, 3] 

很少见到这个鲜为人知的javascript function 。

但除了缩小文件大小的几个字节之外,这是我能想到的唯一其他原因。

通常,您可以将未使用的参数添加到函数中以符合某些预先约定的函数签名,如果您要将此函数作为回调或延续传递给另一个函数,并且API契约说“我打电话给您的回调函数这些参数“,并且您不需要所有参数来执行您在回调中要执行的操作。 (这适用于任何语言,而不仅仅是JavaScript。)

在这个具体案例中,我不知道。 如何使用parseXML; 是直接调用,还是用作可能期望3参数函数的其他函数的参数?

(xml & tmp used internally)

你误解了意思。 它们并不意味着在函数内部“内部”。 它们指的是图书馆内部。 该函数的公共API有一个参数(数据)。 此函数的私有API有3个参数。

这在jQuery中很常见。 通常,这些function可以有或没有副作用。 没有副作用的API是公共的,jQuery本身将传递更多参数,以引起您作为用户不应该做的副作用。