JavaScript剩余参数(...args)允许函数接收任意数量实参并存为真数组,必须位于参数列表末尾;相比arguments类数组,它支持数组方法且适用于箭头函数。

JavaScript 剩余参数(Rest Parameters)是一种语法特性,允许函数接收**任意数量的实参**,并将它们自动收集为一个**真正的数组**。它用三个点 ... 加参数名表示,比如 ...args,必须放在参数列表的**最后位置**。
过去常用 arguments 类数组对象来处理不定参数,但它不是数组,不能直接用 map、filter、展开运算符等;而剩余参数是标准数组,更直观、更强大。
arguments 是类数组,没有数组方法,且在箭头函数中不可用...args 是真数组,支持所有数组方法和解构arguments 包含全部传入参数定义函数时,在最后一个形参前加 ...,该参数就会接收所有剩余实参:
function sum(...numbers) {
return numbers.reduce((a, b) => a + b, 0);
}
sum(1, 2); // 3
sum(1, 2, 3, 4); // 10
常见用途包括:
立即学习“Java免费学习笔记(深入)”;
console.log)可以结合数组解构,灵活分离“固定参数”和“剩余参数”:
function greet(first, second, ...others) {
console.log(`Hi, ${first} and ${second}`);
if (others.length > 0) {
console.log('Also:', others.join(', '));
}
}
greet('Alice', 'Bob', 'Charlie', 'Diana');
// Hi, Alice and Bob
// Also: Charlie, Diana
注意:剩余参数只能有一个,且必须是最后一个参数;不能和多个同级剩余参数共存,也不能出现在默认参数之后。
用剩余参数轻松实现发布订阅模式中的多参数事件触发:
const bus = {
events: {},
on(event, handler) {
this.events[event] = this.events[event] || [];
this.events[event].push(handler);
},
emit(event, ...data) {
const handlers = this.events[event] || [];
handlers.forEach(fn => fn(...data)); // 用展开运算符传参
}
};
bus.on('user-login', (name, role) => console.log(`${name} logged in as ${role}`));
bus.emit('user-login', 'Tom', 'admin'); // Tom logged in as admin
这里 ...data 收集所有事件载荷,fn(...data) 又把它们原样展开传递,干净又灵活。
以上就是javascript剩余参数是什么_如何用它处理不定数量的参数的详细内容,更多请关注php中文网其它相关文章!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号