Get to know MDN better
此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。
剩余参数语法允许函数将任意数量的参数作为数组接收,从而在 JavaScript 中实现了可变参数函数的表示方式。
有一些额外的语法限制:
函数定义的最后一个参数可添加前缀 ...(三个 U+002E FULL STOP 字符),这将导致所有剩余(用户提供的)参数被放入一个 Array 对象中。
剩余参数可以进行解构,这允许你忽略某些参数位置。
然而,以下写法将导致语法错误:
剩余参数不会计入函数的 length 属性。
剩余参数和 arguments 对象之间的区别主要有四个:
在此示例中,第一个参数映射为 a,第二个映射为 b,因此这些命名参数可按常规方式使用。
然而,第三个参数 manyMoreArgs 将是一个数组,其中包含第三、第四、第五、第六……直至第 n 个参数——具体数量取决于用户指定的参数个数。
如下所示,即使只有一个值,最后一个参数仍会被放入数组中。
如下所示,即使没有提供第三个参数,manyMoreArgs 仍然是一个数组(尽管为空)。
如下所示,只提供了一个参数,所以 b 为默认值 undeifned,但是 manyMoreArgs 仍然是一个空数组。
由于 theArgs 是数组,其元素数量可通过 length 属性获取。若函数的唯一参数为剩余参数,则 restParams.length 将等于 arguments.length。
在下一个示例中,使用剩余参数将第一个参数之后的所有参数收集到一个数组中。随后将数组中收集到的每个参数值与第一个参数相乘,并返回该数组:
Array 方法可以用于剩余参数,但不能用在 arguments 对象上:
剩余参数的引入旨在减少将一组参数转换为数组时常用的冗余代码。
在引入剩余参数之前,必须先将 arguments 转换为普通数组,才能对其调用数组方法:
现在,你可以轻松地使用剩余参数访问普通数组:
| ECMAScript® 2027 Language Specification # sec-function-definitions |
启用 JavaScript 以查看此浏览器兼容性表。