剩余参数(...name)是函数最后一个形参,收集多余实参为真数组,支持数组方法;区别于arguments类数组对象,更简洁且箭头函数可用;常用于求和、日志封装、函数转发等场景。

JavaScript 中用三个点 ... 开头的剩余参数(Rest Parameters)可以收集函数调用时传入的“多余”实参,形成一个真正的数组,方便处理不定数量的参数。
剩余参数的基本写法
剩余参数必须是函数最后一个形参,语法为 ...name,其中 name 是任意合法标识符。它会把从当前位置开始的所有未被前面形参接收的实参,自动收集进一个数组。
- 不能出现在普通参数之前或中间,否则报错
- 一个函数最多只能有一个剩余参数
- 它不是类数组对象,而是标准
Array实例,可直接调用map、filter等方法
和 arguments 对象的区别
arguments 是函数内部的类数组对象,不是数组,也没有数组方法;而剩余参数是真数组,更简洁、语义更清晰。
-
arguments在箭头函数中不可用,剩余参数在箭头函数中可用 -
arguments包含所有实参(包括已命名的),剩余参数只收集“剩下的” - 推荐优先使用剩余参数替代
arguments
常见使用场景
适合需要灵活接收参数的函数,比如求和、拼接、代理调用等。
- 求多个数的和:
const sum = (...nums) => nums.reduce((a, b) => a + b, 0); - 封装 console.log 并添加前缀:
const log = (prefix, ...msgs) => console.log(`[${prefix}]`, ...msgs); - 函数柯里化或转发调用:
const wrapper = (fn, ...args) => fn(...args);
注意解构与展开的配合
剩余参数常和扩展运算符(也用 ...)搭配使用,但语境不同:剩余参数用于“收”,扩展运算符用于“放”。
- 定义函数时
...rest是剩余参数(收集) - 调用函数时
...arr是扩展运算符(展开数组为参数) - 两者可组合:
Math.max(...[1, 2, 3])或function f(a, ...rest) { return [a, ...rest]; }
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











