ES6剩余参数用...将末尾不定实参收集为真数组,须位于形参末位且唯一;可与其他形参共存,支持所有数组方法,替代arguments类数组对象。

ES6的剩余参数(Rest Parameters)用三个点 ... 表示,能将函数末尾的不定数量实参收集为一个真正的数组,替代老旧的 arguments 对象。
语法:放在形参列表最后,用 ...name 接收
剩余参数必须是函数最后一个形参,且只能有一个。它自动把调用时多余的实参转成数组:
function sum(...nums) { return nums.reduce((a, b) => a + b, 0); }-
sum(1, 2, 3)→nums是[1, 2, 3] -
sum()→nums是空数组[],不会报错
和 arguments 的关键区别
arguments 是类数组对象,没有 map、filter 等数组方法;剩余参数是真数组,可直接调用所有数组方法:
-
function log(...args) { console.log(args.map(String)); }✅ -
function log() { console.log(arguments.map(String)); }❌ 报错,arguments没有map
可以和其他形参共存,但必须在最后
固定参数写在前面,剩余参数放末尾。例如处理“首项乘以其余各项”:
立即学习“Java免费学习笔记(深入)”;
function multiply(first, ...rest) { return rest.reduce((p, c) => p * c, first); }-
multiply(2, 3, 4)→first = 2,rest = [3, 4],结果是24 - 若写成
function multiply(...rest, last)会语法错误
不支持箭头函数单独使用,但可正常嵌套
箭头函数本身支持剩余参数,但不能像传统函数那样通过 arguments 访问 —— 这反而是优点,因为剩余参数已提供清晰数组:
const avg = (...nums) => nums.length ? nums.reduce((a, b) => a + b) / nums.length : 0;-
avg(1, 2, 3, 4)→2.5


















