什么是javascriptRest参数_它如何收集剩余参数?

Rest 参数(...args)用于将函数多余实参收集为真数组,必须位于参数末尾,是Array实例可直接调用数组方法,区别于类数组的arguments,适用于日志、代理、解构等场景。

JavaScript 中的 Rest 参数(...args)是一种语法特性,用于将函数调用时**多余的、未被单独声明的参数**自动收集为一个真正的数组。

Rest 参数的基本写法

它必须写在函数参数列表的最后,用三个英文句点 ... 加上一个变量名表示,比如 ...numbers。这个变量会接收所有“剩下的”实参:

  • 函数定义时,前面的参数按位置匹配,剩下的全归 Rest 参数
  • Rest 参数本身是一个 Array 实例,可以正常使用 mapfilterreduce 等数组方法
  • 能有多个 Rest 参数,也不能跟在它后面再写其他命名参数

和 arguments 对象的区别

arguments 是函数内部可用的类数组对象,但它不是真正的数组,也没有数组方法;而 Rest 参数是标准数组,更直观、更易用:

  • function sum(a, b, ...rest) { return rest.reduce((s, n) => s + n, 0); }
  • 调用 sum(1, 2, 3, 4, 5)a=1, b=2, rest = [3, 4, 5]
  • arguments 在该函数中是 [1, 2, 3, 4, 5],需手动转成数组才能用 reduce

常见使用场景

Rest 参数特别适合处理可变数量参数的函数:

  • 封装多参数函数,如日志函数 log(level, ...msgs)
  • 函数柯里化或代理调用:function wrapper(...args) { return original(...args); }
  • 与解构配合,提取前几项后,把其余项收进数组:const [first, second, ...rest] = arr;

基本上就这些。Rest 参数让 JavaScript 处理不定参数变得更简洁、更符合直觉。