javascript剩余参数是什么_怎样处理不定数量的函数参数?


剩余参数(...)允许函数接收不定数量实参并自动封装为真数组,必须位于形参末位,可与普通参数共存,替代了arguments类数组对象,支持直接调用数组方法且兼容箭头函数。

JavaScript 剩余参数(Rest Parameters)是一种语法特性,用三个点 ... 表示,允许函数接收**不定数量的实参**,并将它们收集为一个真正的数组。它替代了过去依赖 arguments 类数组对象的写法,更简洁、更强大。

剩余参数的基本写法

剩余参数必须是函数最后一个形参,且前面不能有其他普通参数(除非用默认值或解构等配合)。它会把调用时“多出来的”参数自动装进一个数组里。

  • 正确写法:function sum(...numbers) { return numbers.reduce((a, b) => a + b, 0); }
  • 错误写法:function demo(a, ...rest, b) { }(剩余参数不能在中间)
  • 可与普通参数共存:function greet(first, ...others) { console.log(first, others); }

和 arguments 的关键区别

arguments 是类数组对象,没有数组方法(如 mapfilter),需要手动转成数组;而剩余参数本身就是 Array 实例,开箱即用。

  • 旧方式:Array.from(arguments).map(x => x * 2)[...arguments].map(...)
  • 新方式:numbers.map(x => x * 2)(直接调用)
  • arguments 在箭头函数中不可用,剩余参数可以用于任何函数(包括箭头函数)

常见实用场景

剩余参数特别适合封装工具函数、代理调用、参数预处理等场景。

  • 合并多个数组:const merge = (...arrays) => [].concat(...arrays);
  • 带默认前缀的日志函数:const log = (prefix, ...msgs) => console.log(`[${prefix}]`, ...msgs);
  • 函数柯里化或转发:const delay = (fn, ms, ...args) => setTimeout(() => fn(...args), ms);

注意边界情况

调用时没传额外参数,剩余参数就是空数组,不会是 undefined,这点很安全。

  • sum()numbers[]reduce 可正常返回初始值
  • 但若函数逻辑依赖至少一个参数,仍需自行校验,比如 if (numbers.length === 0) throw new Error('至少传一个数');
  • 不能和 arguments 混用:用了剩余参数后,arguments 依然存在,但不推荐再用


# javascript  # java  # 工具  # 区别  # red 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 网络优化76771 】 【 技术知识130152 】 【 IDC云计算60162 】 【 营销推广131313 】 【 AI优化88182 】 【 百度推广37138 】 【 网站推荐60173 】 【 精选阅读31334


相关推荐: Win11色盲模式怎么开_Win11屏幕颜色滤镜设置【关怀】  php下载安装选zip还是msi格式_两种安装包对比【教程】  Python 模块的 __name__ 属性如何由导入方式决定?  PythonFastAPI项目实战教程_API接口与异步处理实践  Win11怎么更改任务栏颜色_Windows11个性化重音色设置  php本地部署后数据库连接报错_1045accessdenied错误解决方法详解【汇总】  WindowsUSB驱动安装异常怎么办_USB驱动重建与恢复教程  如何使用Golang实现错误包装与传递_Golangfmt.Errorf%w使用实践  Python数据挖掘进阶教程_分类回归与聚类案例解析  Win11怎么设置虚拟内存_Windows 11优化内存性能提升速度【技巧】  Win11如何更改用户账户文件夹名称 Win11修改C:Users用户名【终极教程】  c++如何用AFL++进行模糊测试 c++ Fuzzing入门【安全】  Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件  如何在 ACF 中正确更新嵌套多层的 Group 字段子字段  php订单日志怎么记录评价_php记录订单评价日志方法【方法】  手机php文件怎么变成mp4_安卓苹果打开php转mp4方法【教程】  Windows系统被恶意软件破坏后的恢复策略_错误提示修复方式  如何使用Golang实现容器安全扫描_Golang Docker镜像漏洞检测方法  Win11怎么修复系统文件_使用sfc命令修复Win11系统【技巧】  Win11怎么设置ip地址_Windows 11手动配置网络IP教程【详解】  c++怎么用jemalloc c++替换默认内存分配器【性能】  如何使用Golang table-driven fuzz测试_多数据随机化发现缺陷  LINUX怎么查看进程_LINUX ps命令查看运行服务  如何在Golang中优化文件读写性能_使用缓冲和并发处理  PHP接收参数长度超限怎么办_修改postmaxsize设置教程【解答】  Win11怎么关闭防火墙通知_屏蔽Win11安全中心安全警告弹窗【技巧】  php错误怎么开启_display_errors与log_errors的设置【汇总】  如何使用Golang实现微服务事件驱动_使用消息总线解耦服务  php转exe用什么工具打包快_高效打包软件推荐【汇总】  如何使用正则表达式提取以编号开头、后接多个注解的逻辑分组块  如何使用Golang实现文件加密_Golang crypto 文件加密示例  Python异步网络编程_aiohttp说明【指导】  如何在Windows上设置闹钟和计时器_系统自带的时钟应用全攻略【生活技巧】  如何使用Golang理解结构体指针方法接收者_Golang修改字段实践  Win11怎么设置任务栏对齐方式_Windows11个性化任务栏行为  php删除数据怎么清空表_truncate与delete区别及用法【汇总】  Win11怎么连接投影仪_Win11多显示器投屏设置指南【步骤】  Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】  Win11无法安装软件怎么办_Win11解除应用安装限制设置【修复】  如何在 Go 中创建包含 map 的 slice(嵌套数据结构)  Win11怎么设置默认图片查看器_Windows11照片应用关联设置  c++的static关键字有什么用 静态变量和静态函数的应用场景【教程】  Python对象比较与排序_魔术方法解析【教程】  为什么本地php环境运行php脚本卡顿_php执行效率优化方法与设置【说明】  c++中如何进行二进制文件读写_c++ read与write函数用法  php在Linux怎么部署_LNMP环境搭建PHP服务的详细指南【指南】  php修改数据怎么改富文本_update更新html内容注意事项【说明】  短链接还原php提示内存不足_调整PHP内存限制设置【技巧】  如何在 Go 项目开发中正确处理本地包导入与远程模块路径的一致性问题  Python邮件系统自动化教程_批量发送解析与模板应用 

 2025-12-30

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

致胜网络推广营销网


致胜网络推广营销网

致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。

 915688610

 17370845950

 915688610@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.