javascript剩余参数是什么_如何用它处理不定数量的参数

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

javascript剩余参数是什么_如何用它处理不定数量的参数

JavaScript 剩余参数(Rest Parameters)是一种语法特性,允许函数接收**任意数量的实参**,并将它们自动收集为一个**真正的数组**。它用三个点 ... 加参数名表示,比如 ...args,必须放在参数列表的**最后位置**。

剩余参数 vs arguments 对象

过去常用 arguments 类数组对象来处理不定参数,但它不是数组,不能直接用 mapfilter、展开运算符等;而剩余参数是标准数组,更直观、更强大。

arguments 是类数组,没有数组方法,且在箭头函数中不可用 ...args 是真数组,支持所有数组方法和解构 剩余参数只捕获“未显式声明”的多余参数,arguments 包含全部传入参数

基本写法和使用场景

定义函数时,在最后一个形参前加 ...,该参数就会接收所有剩余实参:

function sum(...numbers) {  return numbers.reduce((a, b) => a + b, 0);}sum(1, 2);        // 3sum(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剩余参数是什么_如何用它处理不定数量的参数的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1543945.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月21日 15:29:00
下一篇 2025年12月21日 15:29:11

相关推荐

发表回复

登录后才能评论
关注微信