JavaScript Rest Parameters
本文最后更新于 2024年3月6日 晚上
Introduction to JavaScript rest parameters
ES6 提供了一种新的参数,称为 rest parameter,其前缀为三个点 (…)。rest parameter 允许将不定数量的参数表示为数组。
1 |
|
最后一个参数 (args) 以三个点 (…) 为前缀。它称为 rest parameter。
传递给函数的所有实参都将映射到参数列表。在上面的语法中,第一个参数映射到 a,第二个参数映射到 b,第三个、第四个等将作为数组存储在 rest parameter args 中。
1 |
|
args 数组存储以下值:
1 |
|
如果仅传递前两个参数,则 rest parameter 将为空数组:
1 |
|
注意,rest parameter 必须出现在参数列表的末尾。以下代码将导致错误:
1 |
|
More JavaScript rest parameters examples
1 |
|
在此示例中,args 在数组中。因此,可以使用 for..of 循环来迭代其元素并对它们求和。
假设 sum() 函数的调用者可以传递各种数据类型的参数,例如数字、字符串和布尔值,并且只想计算数字的总和:
1 |
|
以下脚本使用新的 sum() 函数仅对数字参数求和:
1 |
|
如果没有 rest parameter,必须使用函数的 arguments 对象。
但是,arguments 对象本身并不是 Array 类型的实例。因此,不能直接使用 filter() 方法。在 ES5 中,必须使用 Array.prototype.filter.call(),如下所示:
1 |
|
rest 参数使代码更加优雅。假设需要根据特定类型(例如数字、字符串、布尔值和 null)过滤参数。
1 |
|
JavaScript rest parameters and arrow function
箭头函数没有 arguments 对象。因此,如果要向箭头函数传递一些参数,则必须使用 rest parameter。
1 |
|
JavaScript rest parameter in a dynamic function
JavaScript 可以通过 Function 构造函数创建动态函数。并且可以在动态函数中使用 rest parameter。
1 |
|